2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Qiita APIを公式ドキュメントだけ見て作ってみた

Posted at

動機

これまでAPI実装といったら適当なサイトからコピペしてました。楽だし早い。
認証周りとか公式ドキュメントだけだと、自分の読解力では意味が分からない。
しかし!人生一度くらいは自分でやってみたい!
のでやってみます。

ドキュメント

APIドキュメント

1.認証認可を取る

Qiita::TeamのAPI、またはQiitaのGETリクエスト以外のAPIを利用するには、アクセストークンをリクエストに含める必要があります。アクセストークンは、後述するOAuthを利用した認可フローか、ユーザの管理画面から発行できます。

ユーザーの管理画面の方からやってみる。
OAuthを利用した認可フローは面倒そうなので。

1-1.個人用アクセストークンというやつ

image.png

1-2.スコープを設定

image.png

1-3.できた!

image.png

2.APIを早速使ってみる

2-1.アクセストークンの使い方はかんたん

アクセストークンは、以下のようにAuthorizationリクエストヘッダに含められます。

Authorization: Bearer 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcd

2-2.ドキュメントに書いてあるAPIを使う

GET /api/v2/items/:item_id/likes
記事につけられた「いいね!」を作成日時の降順で返します。

GET /api/v2/items/:item_id/likes HTTP/1.1
Host: api.example.com

2-3.curlで試す

$ curl -H 'Authorization: Bearer xxxxxxxxx' https://qiita.com/api/v2/items/2fc47ea31c2de9037278/likes
[]

そうでした。私の記事に「いいね!」などありませんでした。。。
どの記事も空のjsonが返却されます。

3.気を取り直してAPIを使う

3-1.自分の記事を取得するAPI

GET /api/v2/authenticated_user/items
認証中のユーザの記事の一覧を作成日時の降順で返します。

  • page
  • ページ番号 (1から100まで)
  • Example: 1
  • Type: string
  • Pattern: /^[0-9]+$/
  • per_page
  • 1ページあたりに含まれる要素数 (1から100まで)
  • Example: 20
  • Type: string
  • Pattern: /^[0-9]+$/
  • GET /api/v2/authenticated_user/items?page=1&per_page=20 HTTP/1.1
  • Host: api.example.com

3-2.curlでやってみる。

$ curl -H 'Authorization: Bearer xxxxxx' https://qiita.com/api/v2/authenticated_user/items?page=1&per_page=1
[{"rendered_body":"\n\u003ch1\u003e\n\u003cspan id=\"rails-dbseedはマスターデータ投入でちょっと面倒だった\" 
・・・

取れた!けど見にくい。

3-3.curl + python -mjson.tool + grep で閲覧数を取る

"https://xxxxx" みたいにURLをダブルクオーテーションで囲わないと| python -mjson.toolNo JSON object could be decodedエラーが出る。

$ curl -H 'Authorization: Bearer xxxx' "https://qiita.com/api/v2/authenticated_user/items?page=1&per_page=100" |python -mjson.tool|grep 'page_views_count'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 98154    0 98154    0     0   502k      0 --:--:-- --:--:-- --:--:--  504k
        "page_views_count": null,
        "page_views_count": null,
        "page_views_count": null,
        "page_views_count": null,
        "page_views_count": null,
        "page_views_count": null,
        "page_views_count": null,
        "page_views_count": null,
        "page_views_count": null,

ぐぬぬ。
ここでドキュメントしかみないことは諦めた。

3-4.できた

参考:自分の Qiita 記事の閲覧数を取得して報告する BOT を作ってみた

curl -H "Authorization: Bearer xxxxxx" "https://qiita.com/api/v2/items/2fc47ea31c2de9037278"  |python -mjson.tool | grep 'page_views'
    "page_views_count": 98,

振り返り

  • 良かった点
    • google先生とQiitaの人たちの偉大さを実感できた
  • 反省
    • 自分の無力さを思い知った
    • ちょっと息抜き程度に考えてたら1.5時間くらいかかった
2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?