Web API the good parts

エンドポイントの基本的な設計

覚えやすく、どんな機能を持つURIなのかがひと目でわかる
  • 短くて入力しやすいURI
  • 人間が読んで理解できるURL
  • 大文字小文字が混在していないURI
  • 改造しやすい(Hackableな)URI
  • サーバー側のアーキテクチャが反映されていないURI
    • どんなソフトウェア、言語を利用しているのか。
    • ディレクトリやシステム構成がどうなっているのか。
  • ルールが統一されたURI
リソースにアクセスするための設計の注意点
  • 複数形の名詞を利用する
  • 利用する単語に気をつける
  • スペースやエンコードを必要とする文字を使わない
  • 単語をつなげる必要がある場合はハイフンを利用する

リソースの一覧取得のエンドポイントが検索を兼ねる。 絞り込み検索はパラメーターを設定する。

検索に相対位置を利用する問題点

データ数が膨大になるとpageやoffsetを指定されていると「先頭から何件目か」を調べるために先頭から数を数える処理が行われるため遅くなる。 また、更新頻度が高いデータの場合データに不整合が生じる。

絶対位置でデータを問題点

絶対位置指定とは、オフセットで相対位置を指定する代わりに、これまで取得した最後のデータのIDや時間を記録しておいて、「このIDより前のもの」や「この時刻より古いもの」と言った指定を行う方法。 

配列とフォーマット

オブジェクトで配列を包むメリット
  • レスポンスデータが何をしていものかがわかりやすくなる
  • レスポンスデータをオブジェクトに統一することができる。
  • セキュリティ上のリスクを避けることができる

トップれべるが配列であるJSONは、JSONインジェクションに対するリスクが大きくなる。

続きがある場合どうデータを返すべきか

例えば20件データを返すためには最大21件の取得を行ってみて、実際に21件取得できれば、 「hasNext」といった名前で結果を含めてあげれば良い。