LoginSignup
4
4

More than 5 years have passed since last update.

Qiita APIのGET /api/v1/users/:user_id/items を GET /api/v2/itemsに移行する

Last updated at Posted at 2017-09-24

はじめに

不特定多数の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の利用制限が変わっている

v2ではaccess_tokenが無い/無効な場合に同一IPアドレスから1時間に60回までしかリクエストできない。つまり一回のリクエストで60sec待たなければいけなくなる。

そのため、最初は2secだけ余裕をもたせた62secだけsleepしてリクエストしていたがそれでも403 Rate Limitになってしまった。さらに余裕を持たせて70secに変更して運用することにした。

4
4
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
4
4