同じGETURIを作成できますが、クエリパラメーターは異なりますか?
たとえば、2つのREST GET URI:
/questions/ask/?type=rest
/questions/ask/?byUser=john
現在、RESTサービスは、2つのGETメソッドを別個のものとして認識せず、最初に宣言された1つのGETメソッドのみと見なします。
任意のリソースを引用していただければ幸いです。
resourceは[〜#〜] path [〜#〜]によって一意に識別されるため(パラメータではなく) 。定義する2つのリソースは同じPATHを持っています。
@Path("/questions/ask")
JSR-311仕様 によると:
サブリソースメソッドと呼ばれるこのようなメソッドは、通常のリソースメソッド(セクション3.3を参照)と同様に扱われますが、メソッドは、URIを連結して作成されたURIテンプレートに一致するリクエストURIに対してのみ呼び出されます。メソッドのURIテンプレートを使用したリソースクラスのテンプレート。
データモデルには2つの異なるリソースが含まれているため、パスが異なる2つのrestメソッドを作成することをお勧めします。
@Path("/questions/ask/type")
@Path("/questions/ask/user")
これはRESTfulな方法です。これは、1つのURIが1つのリソースのみを表し、オーバーロードが発生しないようにするためです。 1つのURIが複数のリソースを表す場合、それはどこかで間違っていることを意味します。
Uriが同じでリクエストパラメータが異なる2つのゲッターを持つことはできません。あなたができることは、多くのリクエストパラメータを持つ1つのgetterメソッドを持つことです。
@RequestMapping(value = "uri", method = RequestMethod.GET)
public String test(@RequestParam String type, @RequestParam String byUser)
次に、2つのパラメーターを使用して呼び出します
/questions/ask/?type=rest&byUser=john
これらのパラメータを適切に処理するには、testメソッド内のロジックを処理する必要があります。
ダリジャンに関しては、下線の論理が何であるかを考慮して、2つの方法または1つの方法を選択するかどうかを決めるのは自由だと思います。 2つの方法を使用する場合は、2つのuriを使用します。ビジネスロジックが1つのuriで問題ない場合は、私が答えた方法を使用してください
RESTリクエストをオーバーロードすることはできません。
ビジネス層では、2つの変数のどちらが設定されているかを確認してから、必要な処理を行う必要があります。
リクエストに存在するリクエスト/クエリパラメータに関して、残りのエンドポイントをオーバーロードできます。これが私のユースケースを解決した答えです: 異なる引数で同じURLパターンに対して2つのメソッドを作成します