我正在编写RESTful Web服务,但当 URI路径相同时,CXF与正确的目标方法不匹配< / strong>但只有@QueryParam
参数不同......
我知道@QueryParam
参数是可选的,因为它说in the answer of this post:&#34; 两种方法都不明确 [在 URI路径等级] ,似乎第一个胜出&#34; ...
例如http://mydomain/property?key=sthA
或http://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