2017-09-18 2 views
0

既存のREST APIがあり、他に大きな変更を加えずに追加のオプションパラメータを追加したいと考えています。オプションのPathParamを指定する

これは、今日の作品:以下のURLの両方が動作するように私が欲しいもの

@Path("SomeRecommendation/param1={param1}&param2={param2}") 
public String myMethod( 
@PathParam("param1") String param1, 
@PathParam("param2") String param2) 

は後方互換性のある方法で、このようなものです:
URL1:SomeRecommendation /のparam1 = 1 & PARAM2 = 2
OR
URL2:SomeRecommendation/PARAM1 = 1 & PARAM2 = 2 & param3 = 3
URL1を使用して、既存のクライアントがparam3を渡して起動する必要はありませんようにするため、突然 と新規顧客のすべてが

@Path("SomeRecommendation/param1={param1}&param2={param2}&param3={param3}") 
public String myMethod( 
@PathParam("param1") String param1, 
@PathParam("param2") String param2, 
@PathParam("param3") String param3) 

誰でも似たような解決param3渡すことができますか? PathParamからここではQueryParamに変更できないとします。

+0

これはかなり不明です... –

+0

私の悪い、固定された質問。 – Scorpion

+1

_ "ここでは、PathParamからQueryParamに変更することはできません。"なぜそれを正しくするために間違っているものを変更することはできませんか?議論をする。これは、あなたがやろうとしていることと、あなたが与えている理由には全く意味がありません。なぜなら、あなたが '@ PathParam'か' @ QueryParam'を使うのかどうかは、外の世界にとっては全く同じです。クライアントには分かりません。 –

答えて

0

これはテストされていませんが、別の方法として両方のパスを持たない理由はありますか?次のように少し異なる名前を付けてください:

@Path("SomeRecommendation/param1={param1}&param2={param2}") 
public String myMethod( 
     @PathParam("param1") String param1, 
     @PathParam("param2") String param2) 

@Path("SomeRecommendation/param1={param1}&param2={param2}&param3={param3}") 
public String myNewMethod( 
     @PathParam("param1") String param1, 
     @PathParam("param2") String param2, 
     @PathParam("param3") String param3) 

いずれかのURLに正確なパスの一致があるため、正しい方法を呼び出す必要があります。

照会パラメーターの代わりにパスパラメーターを使用すると、が非常にとなります。

+0

ありがとうエリック、別の方法がない場合、これをバックアップオプションとして保持しています。 – Scorpion

関連する問題