指定可选的PathParam

时间:2017-09-18 22:45:08

标签: rest jax-rs restful-architecture

我们有一个现有的REST API,我希望包含一个额外的可选参数,而不进行任何其他重大更改。

今天有效:

@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 新客户可以通过param3

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

有人解决了类似的问题吗? 假设我们不能在这里从PathParam更改为QueryParam。

1 个答案:

答案 0 :(得分: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都具有精确的路径匹配,因此应调用正确的方法。

使用路径参数而非查询参数高度可疑。