教科書の虫

すぐに役に立つことは,すぐに役に立たなくなります.

私的API設計メモ

この記事はKosen13s' Advent Calendar 2018の記事です.

adventar.org

 

アドカレは初めてで,何を書こうか悩んでいるのですが,最近API設計のお仕事が舞い込んできたので,インプットしたことをまとめようと思います.

 

参考にしたのはこちらの本です. 第3章まで読みました.

Web API: The Good Parts

Web API: The Good Parts

 

 

 

エンドポイントの設計とリクエストの形式

APIエンドポイントの考え方

そもそもエンドポイントとは

URIと考えてOK

 

エンドポイントの基本的な設計
  • 覚えやすく,どんな機能をもつURIなのかが一目でわかる
  • 短く入力しやすい
  • サーバー側のアーキテクチャが反映されていない

 

APIのエンドポイント設計

URI(リソース)とアクションの組み合わせで決める

 

 

レスポンスデータの設計

 

データの内部構造の考え方

「フロントは一つの画面ごとに一つのAPIを叩く」ことを原則として考える.

一つの作業に対して一つのAPIを用意する.

 

エンベロープは必要か

ヘッダやレスポンスなど,全てのデータを同じ構造で包むこと

ほとんどの場合冗長なので必要ない,レスポンスだけ返そう

 

データはフラットにすべきか

こだわりがない限りフラットにすべき

 

配列とフォーマット

複数のデータを返すときは,配列をそのまま返すのではなく,オブジェクトを返そう

 

配列の件数,あるいは続きがあるかをどう返すべきか

必ずしも全件数を知る必要はない.

続きがあるよフラグを返すという解決策もあり

 

各データのフォーマット

各データの名前

スネークケースが良さげ

 

エラーの表現

ステータスコードでエラーを表現する

ぴったり合うエラーコードがあればそのエラーコードを選び,なければ400や500など,00番台のエラーコードを選ぼう.

 

エラーの詳細をクライアントに返す

エラー用JSONを返そう

errorという配列で表現すれば,複数のエラーを返せる

 

 

最後に

API設計に関しては,基礎知識を付けるだけでなく,TwitterFacebookなど,広く公開されている有名なAPIを読み解き,なぜこのように設計したのかを考えながら使ってみることが大事ですね!