LoginSignup
8
12

More than 5 years have passed since last update.

Qiita API v2を利用してcurlで投稿してみた

Last updated at Posted at 2018-10-25

概要

Qiita API v2を利用して記事を投稿するのに、ハマったのでメモ。

アクセストークン

投稿するにはQiitaのアクセストークンが必要になります。

Qiitaにログインしているなら下記URLから登録ができます。

スコープは「read_qiita」と「write_qiita」が必要になります。

POSTで投稿する

ヘッダーでAuthorizationContent-Type を渡して上げましょう。[Qiitaのアクセストークン] は置き換えてください。

ハマりポイントはtags の指定方法でしょうか。サイトからの投稿もタグ必須ですので、APIからの投稿でも必要になります。versions は指定しなくても投稿できました。

> curl -v -X POST "https://qiita.com/api/v2/items" \
  -H "Authorization: Bearer [Qiitaのアクセストークン]" \
  -H "Content-Type: application/json" \
  -d "{\"body\": \"# テスト\",\"private\": true,\"title\": \"テスト\",\"tags\":[{\"name\": \"hoge\",\"versions\": []}]}"

{"rendered_body": ()

JSONは整形すると、こんな感じです。パラメータの詳細は公式をご参考ください。

Qiita API v2ドキュメント - Qiita:Developer
https://qiita.com/api/v2/docs

{
  "body": "# テスト",
  "private": true,
  "title": "テスト",
  "tags":[
    {
      "name": "hoge",
      "versions": []
    }
  ]
}

投稿に成功すると記事情報がJSON形式で返ってきます。
パラメータに間違いがあった場合はステータスコードが500 でエラーになります。4xx でお知らせしてくれません。悲しい。
なので、-i-v オプションを付けて、ステータスコードを確認しましょう。

GETで記事を取得する

こちらはシンプルです。もしviewsが欲しい場合には、ヘッダーでAuthorization を渡す必要があります。(自分の記事に限る)

> curl -v "https://qiita.com/api/v2/items/[記事のID]" 
{"rendered_body": ()

PATCHで記事を更新する

記事を更新する場合は、PATCH メソッドです。PUT メソッドはありません。titlebody が必須項目みたいで、tags などは省略しても更新してくれます。

curl -v -X PATCH "https://qiita.com/api/v2/items/[記事のID]" \
  -H "Authorization: Bearer [Qiitaのアクセストークン]" \
  -H "Content-Type: application/json" \
  -d "{\"body\": \"# テスト2\",\"private\": true,\"title\": \"テスト2\"}"

DELETEで記事を削除する

ほんとに記事が削除されるので、お試しにはご注意ください。

> curl -v -X DELETE "https://qiita.com/api/v2/items/[記事のID]" \
  -H "Authorization: Bearer [Qiitaのアクセストークン]" \

ポイント?としては削除後に、削除した記事にアクセスすると500 エラーになるってことでしょうか。なぜだろう?

まとめ

間違ったパラメータ指定をした場合に、500 エラーでしか返ってこないので、ハマると大変な感じでした。

 参考

Qiita API v2ドキュメント - Qiita:Developer
https://qiita.com/api/v2/docs

Qiita api v2の投稿ができない
https://teratail.com/questions/5212

8
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
12