バックエンド・API・データ · 中級
共存できるインターフェースを設計する
一行でいうと: 良いインターフェースは予測可能で、一貫していて、退屈だ——その中のサプライズはすべて、使う人への繰り返しの質問とバグになる。
一貫性が美しさより先
すべてのルートで同じ命名規則、同じレスポンス構造、同じ日付形式、同じエラー構造。一貫性のある十のルートは、輝く五つと異なる五つより簡単だ。
安定した構造を返す:データとメタデータを持つラッパーオブジェクト、フィールドを壊さずに追加できるように。
戻ってくる決定
ページネーション。事前に決める——オフセットかカーソルか——すべてのリストでサポートする。ページネーションなしのリストは常に期待以上に成長する。
フィルタリングとソート。定義され文書化され、各消費者がルールを発明するフリーフィールドではない。
識別子。安定していて、連番でなく、その数でビジネス情報を明かさない。
エラーはコントラクトの一部
正しいステータスコード、ロジックを分岐できる固定エラー識別子、読めるメッセージ、調査のためのリクエスト識別子。エラーごとに異なる自由テキストを返すインターフェースは、消費者に文字列確認を強制する。
さらに深く
インターフェースをコード自体から文書化して文書が古くならないようにし、ダミーデータのあるテスト環境を提供する。そして公開前に:インターフェースを書いていない誰かに完全なシナリオを実装してもらう——彼らが聞くすべての質問は設計の欠陥であり、理解の欠如ではない。