根据QueryParam参数,CXF与正确的目标方法不匹配

时间:2014-06-03 13:54:15

标签: java rest java-ee cxf

我正在编写RESTful Web服务,但当 URI路径相同时,CXF与正确的目标方法不匹配< / strong>但只有@QueryParam参数不同......

我知道@QueryParam参数是可选的,因为它说in the answer of this post:&#34; 两种方法都不明确 [在 URI路径等级] ,似乎第一个胜出&#34; ...

例如http://mydomain/property?key=sthAhttp://mydomain/property?value=sthB,不幸的是,CXF将匹配相同的方法。

@Path("/property")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface PropertyService {

    @GET
    @Path("/{id}")
    AppSetting findPropertyById(@PathParam("id") String id); /* /property/123 */

    @GET
    Property findPropertyByKey(@QueryParam("key") String key); /* /property?key=sth */

    @GET
    List<Property> getPropertiesByValue(@QueryParam("value") String value); /* /property?value=sth */

}

那么,之间的最佳解决方案是什么:

  • 有一个方法可以处理特定 URI路径的任何可能的@QueryParam参数(这里&#34; / property?[key = sthA] [ &安培;值= STHB] [...] &#34)

  • 或直接在@Path注释的值中设置一些RegExp为&#34; help&#34;使用正确的方法匹配 URI路径的CXF(此处:&#34; / property?key = sthA &#34;应该使用&#34; { {1}}&#34;注释)

  • 或任何其他可能的解决方案

THKS

0 个答案:

没有答案