9
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

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

概要

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
9
Help us understand the problem. What are the problem?