QueryParam と PathParam の使用方法の違いは何ですか?
両方を使用してデータをサービスに渡すことができることを理解しています。PathParam は前のデータですか? URL 内の QueryParam は、? の後の名前値データです。しかし、私はこれらがどのように正確に使用されているのだろうか.
@QueryParam
URL のクエリ文字列 (? の後の部分) のキーと値のペアにアクセスするために使用されます。たとえば urlhttp://example.com?q=searchterm
では、 を使用@QueryParam("q")
して の値を取得できますq
。
@PathParam
URL の一部をパラメーターとして照合するために使用されます。たとえば、フォームの URLでは、 を使用して本の ID を取得http://example.com/books/{bookid}
できます。@PathParam("bookid")
JAX-RS で使用される例については、このページを参照してください。
「実際には」非常に多くの異なる URL スキームが使用されているため、実際にはこの質問に対する正しい答えはおそらく 1 つではありません。ただし、REST URL 処理の観点から見ると便利です。REST (REpresentational State Transfer) の考え方は、アクセスを提供したいすべてのリソースを一意に識別できるようにすることです。一般的な REST スキームでは、URL のパス部分は N 空間の座標のセット (つまり、x、y、z => //myApp/x/y/z) と考えることができ、クエリ パラメータは次のとおりです。さらなる指定子。これらの追加の指定子は、一致するリソースのリストを返すために、不完全なパス指定の検索基準として使用できます。
REST URL のその他の例については、次の質問を参照してください。
編集: @marcokには優れた技術的な回答がありますが、更新されたコメントが公開されているため、どちらをいつ選択するかにより関心があるようです. 一般に、「純粋な」RESTful API を作成する場合、パスの一部であるすべてのものは、ID によってリソースを一意に識別する必要があります。多くの場合、リソースを一意に識別するために、URL がパスの一部として ID 値で終わることがあります。
ただし、API が属性 (おそらく ID を除く) で検索/フィルター処理する機能を直接公開している場合は、それをクエリ パラメーターとしてエンコードする可能性が高くなります。
これらは単なる例であり、何が優れた API を必要とするか、より具体的には API が純粋に RESTful である必要があるかについては、さまざまな意見があります。