APIの概要や設計

APIのエンドポイントにアクセスする主なHTTPメソッドは以下のとおり。

  • GET -> データの取得
  • POST -> 指定したリソースに実体を送信するために使用。サーバー上の状態を変更したり、副作用が発生したりすることがよくある。新規登録やコメント投稿などに使う。
  • PUT メソッド -> リソースの全体を更新する
  • PATCH メソッド -> リソースを部分的に変更するために使用。
  • DELETE メソッド -> 指定したリソースを削除。

いずれのメソッドも何らかの形でリスポンスを返す。

リスポンスの主な状態

  • 201...リクエストは成功し、その結果新たなリソースが作成されたことを示す。一般的にPOSTリクエストや、一部のPUTリクエストを送信した後のレスポンスになる。

  • 204...リクエストに返すコンテンツはなし。DELETEメソッドなどでリソースを削除した時に返されるリスポンス 。

  • 400..構文が無効であるためサーバーがリクエストを理解できないことを示す。パラメータが不正だと発生。

  • 401...HTTP 標準では "unauthorized" (不許可) と定義されているが、意味的にはこのレスポンスは "unauthenticated" (未認証) 。つまり、クライアントはリクエストされたレスポンスを得るためには認証を受けなければならない。ログインしていない時に発生する。「あなたはわからない」とも言える。

  • 403….一般ユーザーが管理画面に行こうとするなど、ログインして認証済みだが権限がない時に発生。「あなたはわかるけど権限がない」とも言える。

  • 406...クライアントからのデータ形式に対応してない。

  • 429...一定期間ないに特定のユーザーが大量のリクエストを送った時に返す。ヘッダには、「Retry-after」を入れて、何秒後にリクエストを再開するかを教える。
  • 404...データがありません

画像などのアップロード

画像アップロードにあたって、画像データの識別は拡張子ではなく、mime typeで行うこと。拡張子では簡単に改変できてしまう。

その他

  • 基本は同じオリジンにしかアクセスできないが、CORS(クロスオリジン共有)によって異なるAPIにもアクセスできるようになる。

  • 一覧でページネーションなどをして(10件表示など)、次のデータがあるのであれば「hasNext」などのフラグを返すと良い。

  • なるべくデータ形式はフラットに。

  • パラメータ種類でクライアント側が取得するデータを操作できるようにする。例えば、本の一覧データを取得するとき(Railsではindexメソッドに該当)、パラメータの種類で料理の本の一覧、旅行の本の一覧などを取得できるようにする。

  • 複数形なら配列で取得する(friends -> [1,2,3,4])