0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ドべ初心者のREST API 設計理解

Last updated at Posted at 2024-06-17

ゴール

  • POST、PUTの違いがわかる人間になる
  • endpoint、header、bodyに何を持たせて何を持たせないかがわかる人間になる

これがお手本だ!! (by ChatGPT出力)

~もしユーザー情報関連のAPIを作るとしたら~

// ユーザー情報取得API

Method: GET
Endpoint: /users/{userId}
Header:
    Authorization: Bearer {token}
    Accept: application/json
Body: なし(GETメソッドでは通常使用しない)
// ユーザー情報更新API

Method: PUT または PATCH
Endpoint: /users/{userId}
Header:
    Authorization: Bearer {token}
    Content-Type: application/json
Body:
    {
      "name": "新しい名前",
      "email": "newemail@example.com"
    }
// ユーザー情報削除API

Method: DELETE
Endpoint: /users/{userId}
Header:
    Authorization: Bearer {token}
    Body: なし(DELETEメソッドでは通常使用しない)

各パラメータの違い

POST、PUTの違い

新規登録 は POST、
更新 は PUT
というだけのことです。

endpoint、header、bodyの違い(それぞれ何を持たせるか)

  • endpoint

    • リソースを特定する内容を含む
    • 例えば、ユーザー関連APIの場合はユーザーを特定できる情報=user_idをエンドポイントに含める、など
    • 例:ユーザーID、商品ID、識別ID系のもの
  • header

    • APIリクエスト/レスポンスと共に送られるメタデータが含まれる
    • 例:
      • 認証情報(トークン等)
      • コンテンツの種類(Content-Type)
      • 許可されているリクエスト方法(メソッド)やオリジン(CORS設定)
      • キャッシュポリシー
  • body

    • 実際にサーバーに送信されるデータが含まれる
    • 例:
      • ユーザーの作成や更新時に必要な情報(例: 名前、メールアドレス)
    • GET、DELETEメソッドの場合はbodyを使用しないことが多い

補足

エンドポイントは具体的すぎる情報を避ける。

例えば、

【ダメな例】
ユーザー取得API(GETメソッド):/v1/user/get_user/{user_id}
ユーザー更新API(PUTメソッド):/v1/user/update_user/{user_id}

【良い例】
ユーザー取得API(GETメソッド):/v1/user/{user_id}
ユーザー更新API(PUTメソッド):/v1/user/{user_id}

取得、更新はメソッド(GET、PUT)で区別できるから、どっちも同じエンドポイントの方がシンプルでいいよね、という話らしいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?