mike-neckのブログ

Java or Groovy or Swift or Golang

中央線Meetupに行ってきた

中央線Meetupという名の かわしまさん の講演会に行ってきた

chuoline.connpass.com

f:id:mike_neck:20200209230346p:plain


zalando という日本で言うところの ZOZO のような会社の REST API 制作のためのガイドラインを 2 時間ほど解説してもらいました。

restful-api-guidelines-ja.netlify.com

興味深いのは API のバージョニングの方法。

基本的にバージョニングを避けるものの、どうしてもバージョンをつけざるを得ない場合、通常は URI でバージョンを表示する形(URI バージョニング)をとりがちになる。

# Item API
# バージョン 1
GET /api/users/{userId}/items

# Item API
# バージョン 2
GET /api/v2/users/{userId}/items

だが、URI バージョニングを使う場合に API 利用者はアプリケーションの修正が必要だったりデプロイされるまで待つ(結果として、ユーザー側プログラムの更新タイミングが遅くなる)必要がある等の不都合が多い。 また、 API 提供者の方でも HATEOS でリソース間の関係を扱う場合に、どちらのバージョンの URI を取り扱うか混乱が生じる。

そこで推奨されるのはヘッダーに明示的にバージョンを示す方法(メディアタイプバージョニング)とのこと。

# Item API
# バージョン 1
GET /api/users/{userId}/items
Accept : application/vnd.example.com.v1+json

# Item API
# バージョン 2
GET /api/users/{userId}/items
Accept : application/vnd.example.com.v2+json

その他、 API 設計についてまとめられているので、目を通しておくとよいかもしれない。