REST APIデザイン-異なるパラメーターで同じURLパターンを使用してRESTを介してリソースを取得する

shahshi15

RESTURLの設計に関連する質問があります。ここでいくつかの関連する投稿を見つけました:同じリソースのさまざまなRESTful表現とここ:さまざまなフィールドによるGETリソースへのRESTful URLですが、ベストプラクティスとその理由についての回答は明確ではありません。これが例です。

「ユーザー」リソースを表すためのRESTURLがあります。IDまたは電子メールアドレスを持つユーザーを取得できますが、URL表現は両方で同じままです。たくさんのブログや本を見てみると、人々はこれをさまざまな方法で行っていることがわかります。例えば

本とstackoverflowのどこかでこの練習を読んでください(私は再びリンクを見つけることができないようです)

GET /users/id={id}
GET /users/email={email}

多くのブログでこのプラクティスを読んでください

GET /users/{id}
GET /users/email/{email}

クエリパラメータは通常、URLで表されるリソースの結果をフィルタリングするために使用されますが、この方法も使用されているのを見てきました。

GET /users?id={id}
GET /users?email={email}

私の質問は、これらすべてのプラクティスの中で、APIを消費する開発者にとって最も理にかなっているのはどれですか。その理由は何ですか。RESTのURLデザインと命名規則に関しては、決まったルールはないと思いますが、開発者がAPIをよりよく理解できるようにするためにどのルートを取るべきかを知りたかっただけです。

すべての助けに感謝します!

DannyMo

私の経験でGET /users/{id} GET /users/email/{email}は、これが最も一般的なアプローチです。また、提供されたidまたはでユーザーが存在しない場合、メソッドが404 NotFoundを返すことを期待しますemail私も驚かないでしょうGET /users/id/{id}(私の意見では、それは冗長ですが)。

他のアプローチに関するコメント

  1. GET /users/id={id} GET /users/email={email}
    • 私はこれを見たことがないと思います、そして私がそれを見たならば、それは非常に混乱するでしょう。これは、パスパラメータを使用してクエリパラメータを模倣しようとしているようなものです。
  2. GET /users?id={id} GET /users?email={email}
    • クエリパラメータを使用してフィルタリングすることについて言及したとき、あなたは頭に釘を打ったと思います。
    • それは今まで感覚がして、このリソースを呼び出すことになるだろう両方ANidemail(例えばGET /users?id={id}&email={email})?そうでなければ、私はこのような単一のリソースメソッドを使用しません。
    • フィルタリング用のオプションのクエリパラメーターを使用してユーザーのリストを取得するためのこのメソッドを期待しますが、パラメーター内にidemailまたは一意の識別子が含まれることは期待していません例:GET /users?status=BANNED禁止されたユーザーのリストを返す場合があります。

関連する質問からこの回答確認してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

springboot RESTコントローラーを使用してspringfoxで異なるパラメーターを持つ2つの同じURLをマップする方法は?

分類Dev

RESTメソッドを介してリリースパイプラインの出力を取得するにはどうすればよいですか

分類Dev

Spring / RESTで、マッピングは同じでパラメーターが異なる複数のメソッドを定義できますか?

分類Dev

REST APIを介して渡されるマルチインデックスルックアップサイファークエリでパラメーターを使用できますか?

分類Dev

REST API を使用して New Relic アプリケーション パフォーマンス モニタリング データを取得する

分類Dev

Jmeterで、Rest APIを使用してCSVファイルから入力を取得している場合、HTTPリクエストサンプラーのボディデータセクションのパラメーターの構文はどうなりますか?

分類Dev

同じメソッドと異なるヘッダーを使用してRESTコントローラーを単純化する方法は?

分類Dev

オプションのパラメーターを使用してREST APIを作成する方法

分類Dev

パラメータとしてINTのリストを必要とするRESTAPIをテストするRESTコンソール

分類Dev

talendでRESTリクエストを介してjsonデータを送信する

分類Dev

基本的なreactjs、RESTデータを取得してレンダリングする方法

分類Dev

rest apiを使用して呼び出しを行う場合、そのurlパラメーターでどのtwimlを使用するか

分類Dev

リクエストペイロードを介してグリッドパネルデータをRESTコントローラーに渡す

分類Dev

AWS Amplify REST API(Javascript)でパスパラメーターを使用する

分類Dev

django-rest-frameworkを使用してエンドポイントからJsonメタデータを取得する方法

分類Dev

バックボーンモデル-RESTアクションに応じてURLクエリパラメータを変更します

分類Dev

webtargetを使用してクライアントからRESTリクエストを呼び出します。しかし、残りのリソースのパラメーターがクライアントモデルクラスパラメーターにマップされていません

分類Dev

Rest APIを使用して、タイトルを使用してドキュメントライブラリのサーバー相対URLを取得する直接的な方法はありますか?

分類Dev

Javaを使用してRest APIに1から多くのパラメーターを送信する方法

分類Dev

コンシューマーに応じて異なるRESTインターフェースを持つのは正しいですか?

分類Dev

AngularTestで異なるパラメーターを使用して同じ関数を複数回スパイする

分類Dev

Azure DevOps Rest APIを使用してPowerShellでリリースのステータス(成功、失敗)を取得する方法

分類Dev

REST APIで同じリソースにアクセスするために異なるパスを使用するには

分類Dev

TFS Rest API:テスト結果をフィルタリングするためのパラメーターの結果が機能していません

分類Dev

Spring Restテンプレートは%を使用してパラメーターに値を挿入します

分類Dev

同じパスでRESTクラスとオーバーライドメソッドを拡張する

分類Dev

Spring RESTコントローラー、マップされていないクエリパラメーターを取得する

分類Dev

RESTを使用してSpringなしでCamelにグローバルカスタムJacksonデシリアライザーを設定する方法

分類Dev

REST を使用して Apache Kafka を介してデータを送信する

Related 関連記事

  1. 1

    springboot RESTコントローラーを使用してspringfoxで異なるパラメーターを持つ2つの同じURLをマップする方法は?

  2. 2

    RESTメソッドを介してリリースパイプラインの出力を取得するにはどうすればよいですか

  3. 3

    Spring / RESTで、マッピングは同じでパラメーターが異なる複数のメソッドを定義できますか?

  4. 4

    REST APIを介して渡されるマルチインデックスルックアップサイファークエリでパラメーターを使用できますか?

  5. 5

    REST API を使用して New Relic アプリケーション パフォーマンス モニタリング データを取得する

  6. 6

    Jmeterで、Rest APIを使用してCSVファイルから入力を取得している場合、HTTPリクエストサンプラーのボディデータセクションのパラメーターの構文はどうなりますか?

  7. 7

    同じメソッドと異なるヘッダーを使用してRESTコントローラーを単純化する方法は?

  8. 8

    オプションのパラメーターを使用してREST APIを作成する方法

  9. 9

    パラメータとしてINTのリストを必要とするRESTAPIをテストするRESTコンソール

  10. 10

    talendでRESTリクエストを介してjsonデータを送信する

  11. 11

    基本的なreactjs、RESTデータを取得してレンダリングする方法

  12. 12

    rest apiを使用して呼び出しを行う場合、そのurlパラメーターでどのtwimlを使用するか

  13. 13

    リクエストペイロードを介してグリッドパネルデータをRESTコントローラーに渡す

  14. 14

    AWS Amplify REST API(Javascript)でパスパラメーターを使用する

  15. 15

    django-rest-frameworkを使用してエンドポイントからJsonメタデータを取得する方法

  16. 16

    バックボーンモデル-RESTアクションに応じてURLクエリパラメータを変更します

  17. 17

    webtargetを使用してクライアントからRESTリクエストを呼び出します。しかし、残りのリソースのパラメーターがクライアントモデルクラスパラメーターにマップされていません

  18. 18

    Rest APIを使用して、タイトルを使用してドキュメントライブラリのサーバー相対URLを取得する直接的な方法はありますか?

  19. 19

    Javaを使用してRest APIに1から多くのパラメーターを送信する方法

  20. 20

    コンシューマーに応じて異なるRESTインターフェースを持つのは正しいですか?

  21. 21

    AngularTestで異なるパラメーターを使用して同じ関数を複数回スパイする

  22. 22

    Azure DevOps Rest APIを使用してPowerShellでリリースのステータス(成功、失敗)を取得する方法

  23. 23

    REST APIで同じリソースにアクセスするために異なるパスを使用するには

  24. 24

    TFS Rest API:テスト結果をフィルタリングするためのパラメーターの結果が機能していません

  25. 25

    Spring Restテンプレートは%を使用してパラメーターに値を挿入します

  26. 26

    同じパスでRESTクラスとオーバーライドメソッドを拡張する

  27. 27

    Spring RESTコントローラー、マップされていないクエリパラメーターを取得する

  28. 28

    RESTを使用してSpringなしでCamelにグローバルカスタムJacksonデシリアライザーを設定する方法

  29. 29

    REST を使用して Apache Kafka を介してデータを送信する

ホットタグ

アーカイブ