ここですでに尋ねられている質問を私は尋ねているのではありません:@PathParamと@QueryParamの違いは何ですか
これは「ベスト プラクティス」または慣例に関する質問です。
@PathParam
vsはいつ使用しますか@QueryParam
。
私が考えられるのは、情報パターンを区別するために 2 つを使用するという決定です。以下に、完璧とは言えない私の LTPO の観察結果を示します。
PathParam の使用は情報カテゴリ用に予約することができ、情報ツリーのブランチにうまく収まります。PathParam はエンティティ クラス階層にドリルダウンするために使用できます。
一方、QueryParam は、クラスのインスタンスを見つけるための属性を指定するために予約できます。
例えば、
/Vehicle/Car?registration=123
/House/Colonial?region=newengland
/category?instance
@GET
@Path("/employee/{dept}")
Patient getEmployee(@PathParam("dept")Long dept, @QueryParam("id")Long id) ;
対/category/instance
@GET
@Path("/employee/{dept}/{id}")
Patient getEmployee(@PathParam("dept")Long dept, @PathParam("id")Long id) ;
対?category+instance
@GET
@Path("/employee")
Patient getEmployee(@QueryParam("dept")Long dept, @QueryParam("id")Long id) ;
これを実行する標準的な慣例があるとは思いません。あるのでしょうか? ただし、上で例示したように、PathParam と QueryParam を使用して情報を区別する方法を知りたいと思います。また、その方法の背後にある理由も知りたいです。
ベストアンサー1
REST 自体は標準ではないかもしれませんが、一般的な REST ドキュメントやブログ投稿を読むと、API URL を構成するための適切な方法に関するガイドラインが得られるはずです。ほとんどの REST API では、パスにリソース名とリソース ID のみが含まれる傾向があります。たとえば、次のようになります。
/departments/{dept}/employees/{id}
一部のREST APIは、フィルタリング、ページネーション、ソートにクエリ文字列を使用しますが、RESTは厳密な標準ではないため、次のようなREST APIを確認することをお勧めします。ギットハブそしてスタックオーバーフローそして、あなたのユースケースに適したものを見つけてください。
必須のパラメータはすべてパスに入れることをお勧めします。オプションのパラメータは必ずクエリ文字列パラメータにする必要があります。オプションのパラメータをパスに入れると、さまざまな組み合わせに一致する URL ハンドラを記述しようとするときに、非常に面倒なことになります。