我们有一个现有的REST API,我希望包含一个额外的可选参数,而不进行任何其他重大更改。
今天有效:
@Path("SomeRecommendation/param1={param1}¶m2={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
新客户可以通过param3
@Path("SomeRecommendation/param1={param1}¶m2={param2}¶m3={param3}")
public String myMethod(
@PathParam("param1") String param1,
@PathParam("param2") String param2,
@PathParam("param3") String param3)
有人解决了类似的问题吗? 假设我们不能在这里从PathParam更改为QueryParam。
答案 0 :(得分:0)
这是未经测试的,但有没有理由不将这两个路径作为单独的方法?给第二个名称略有不同,例如:
@Path("SomeRecommendation/param1={param1}¶m2={param2}")
public String myMethod(
@PathParam("param1") String param1,
@PathParam("param2") String param2)
@Path("SomeRecommendation/param1={param1}¶m2={param2}¶m3={param3}")
public String myNewMethod(
@PathParam("param1") String param1,
@PathParam("param2") String param2,
@PathParam("param3") String param3)
由于任一URL都具有精确的路径匹配,因此应调用正确的方法。
使用路径参数而非查询参数高度可疑。