はじめに
不特定多数のQiitaユーザの記事取得にGET /api/v1/users/:user_id/items
を使っていたが、2017年9月中にv1が廃止になるとのことでv2でそれっぽいのを探したところ、GET /api/v2/items
が使えることがわかった。追記: /api/v2/users/:user_id/items が必要十分だった。
なぜそもそもv1を使っていた?
GET /api/v2/authenticated_user/items
が既にあったが、これは使えねーなと思ってv1を使っていたが、v1が廃止となってよくよく調べるとGET /api/v2/items
が使えそうだった。
- ❌
GET /api/v2/authenticated_user/items
- トークンが必要っぽいので認可済みユーザの記事でないと無理なのでこれは使わない
- ⭕
GET /api/v2/items
- パラメータなしだと全ユーザ対象だがパラメータ query でユーザ名を指定すればいけそう
- 例:
"query":"qiita user:yimajo"
- ⭕
GET /api/v2/users/:user_id/items
- トークンが必要なくユーザの記事が取得できる
試す
access_tokenを利用した際に限定共有を取得しないで済むか
GET /api/v2/items
で利用制限をゆるくしたいためaccess_tokenを使いたいが限定共有記事を取得したくないのでcURLで試した(GET /api/v1/users/#{qiita_id}/items
では限定共有記事を取得していた)
curl -X GET https://qiita.com/api/v2/items -d '{"per_page":"10", "query":"qiita user:yimajo"}' -H "Content-Type: application/json" -H ‘Authorization: Bearer ここがトークン‘
- 想定してた自分の記事が取得できた
その他注意事項
APIの利用制限が変わっている
- v1
- v2
v2ではaccess_tokenが無い/無効な場合に同一IPアドレスから1時間に60回までしかリクエストできない。つまり一回のリクエストで60sec待たなければいけなくなる。
そのため、最初は2secだけ余裕をもたせた62secだけsleepしてリクエストしていたがそれでも403 Rate Limitになってしまった。さらに余裕を持たせて70secに変更して運用することにした。