1. API設計入門 MOC

2. APIスタイルとパラダイム MOC

3. API設計の一般原則とベストプラクティス MOC

4. Web API設計の詳細 (主にHTTPベース) MOC

4.1. URI設計 (URI Design) MOC

4.2. HTTPメソッドの適切な利用 MOC

  • GET: リソースの取得 (安全、冪等)
  • POST: リソースの新規作成、またはサブリソースの作成、他のメソッドで表現できない操作 (冪等でない)
  • PUT: リソースの完全な更新または作成 (冪等)
  • DELETE: リソースの削除 (冪等)
  • PATCH: リソースの部分的な更新 (冪等であるべきだが、実装による)
  • HEAD: GETと同様だがレスポンスボディなし (メタデータ取得) (安全、冪等)
  • OPTIONS: リソースがサポートするメソッドの取得 (CORS) (安全、冪等)
  • メソッドの安全性と冪等性の理解と適用

4.3. HTTPステータスコードの適切な利用 MOC

  • カテゴリ別ステータスコード
    • [[1xx: 情報 (Informational)]] (Continue, Switching Protocols)
    • [[2xx: 成功 (Successful)]]
      • [[200 OK]]
      • [[201 Created]]
      • [[202 Accepted]]
      • [[204 No Content]]
    • [[3xx: リダイレクション (Redirection)]]
      • [[301 Moved Permanently]]
      • [[302 Found / 303 See Other / 307 Temporary Redirect]]
      • [[304 Not Modified]]
    • [[4xx: クライアントエラー (Client Error)]]
      • [[400 Bad Request]]
      • [[401 Unauthorized]] (認証失敗)
      • [[403 Forbidden]] (認可失敗)
      • [[404 Not Found]]
      • [[405 Method Not Allowed]]
      • [[406 Not Acceptable]]
      • [[409 Conflict]]
      • [[415 Unsupported Media Type]]
      • [[422 Unprocessable Entity]] (バリデーションエラー)
      • [[429 Too Many Requests]] (レート制限)
    • [[5xx: サーバエラー (Server Error)]]
      • [[500 Internal Server Error]]
      • [[502 Bad Gateway]]
      • [[503 Service Unavailable]]
      • [[504 Gateway Timeout]]
  • エラーレスポンスボディとの連携 (詳細はエラー処理設計で)

4.4. レスポンスヘッダ設計 MOC

  • 標準HTTPヘッダの活用
    • [[Content-Type]] (リクエスト/レスポンスボディのメディアタイプ)
    • [[Accept]] (クライアントが受け入れ可能なメディアタイプ)
    • [[Authorization]] (認証情報)
    • [[Cache-Control, ETag, Last-Modified, Expires]] (キャッシュ制御)
    • [[Location]] (リソース作成時やリダイレクト時)
    • [[User-Agent]]
    • [[Allow]] (サポートするHTTPメソッド)
    • [[Content-Length]]
    • [[Content-Encoding]] (gzipなど)
    • [[Link]] (HATEOAS, ページネーション)
  • カスタムヘッダ (X-プレフィックスなど)

4.5. データフォーマット (Data Formats) MOC

4.6. ペイロード設計 (Payload Design) MOC

4.7. ページネーション (Pagination) MOC

4.8. フィルタリング (Filtering) MOC

4.9. ソート (Sorting) MOC

4.10. 検索 (Searching) MOC

4.11. レート制限 (Rate Limiting) とスロットリング (Throttling) MOC

4.12. キャッシュ戦略 (Caching Strategies) MOC

4.13. HATEOAS (Hypermedia as the Engine of Application State) MOC

4.14. 国際化 (i18n) と地域化 (l10n) の考慮

5. APIセキュリティ MOC

6. APIのバージョニング MOC

7. APIドキュメンテーション MOC

8. APIテスト MOC

9. APIライフサイクル管理 MOC

10. API設計アンチパターン MOC

  • リソース設計のアンチパターン
    • [[チャッティAPI (Chatty API) / 細かすぎるリソース]]
    • [[ゴッドAPI (God API / Monolithic API Endpoint) / 粗すぎるリソース]]
    • [[動詞を使ったURI (/getUsers, /createUser)]]
    • [[URIにコンテキストを含めすぎる (/tenant/123/department/456/employee/789)]]
  • リクエスト/レスポンス設計のアンチパターン
    • [[一貫性のない命名規則やデータフォーマット]]
    • [[不必要なデータの公開 (オーバーフェッチ)]]
    • [[必要なデータが一度に取得できない (アンダーフェッチ)]]
    • [[レスポンスエンベロープの乱用]]
  • HTTP利用のアンチパターン
    • [[不適切なHTTPメソッドの使用 (例: GETで状態変更)]]
    • [[不適切なHTTPステータスコードの使用 (例: エラーなのに200 OK)]]
    • [[全てのエラーを200 OKで返し、ボディでエラー内容を伝える]]
  • エラー処理のアンチパターン
    • [[貧弱なエラー報告 (情報不足、不明瞭)]]
    • [[スタックトレースなどの機密情報をそのまま返す]]
  • バージョニングのアンチパターン
    • [[バージョニングの欠如]]
    • [[頻繁すぎる破壊的変更]]
    • [[多数のバージョンを永続的にサポート]]
  • ドキュメンテーションのアンチパターン
    • [[ドキュメントが存在しない、または不十分]]
    • [[ドキュメントが古く、現状と乖離している]]
  • セキュリティのアンチパターン
    • [[認証/認可の不備]]
    • [[入力検証の欠如]]
    • [[HTTPS未使用]]