動機
これまでAPI実装といったら適当なサイトからコピペしてました。楽だし早い。
認証周りとか公式ドキュメントだけだと、自分の読解力では意味が分からない。
しかし!人生一度くらいは自分でやってみたい!
のでやってみます。
ドキュメント
1.認証認可を取る
Qiita::TeamのAPI、またはQiitaのGETリクエスト以外のAPIを利用するには、アクセストークンをリクエストに含める必要があります。アクセストークンは、後述するOAuthを利用した認可フローか、ユーザの管理画面から発行できます。
ユーザーの管理画面の方からやってみる。
OAuthを利用した認可フローは面倒そうなので。
1-1.個人用アクセストークンというやつ
1-2.スコープを設定
1-3.できた!
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.tool
でNo 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時間くらいかかった