Java CXF不';根据QueryParam参数的不同,无法匹配正确的目标方法
我正在编写一个RESTful Web服务,但是当URI路径相同时,CXF与右目标方法不匹配,但只有Java CXF不';根据QueryParam参数的不同,无法匹配正确的目标方法,java,rest,jakarta-ee,cxf,Java,Rest,Jakarta Ee,Cxf,我正在编写一个RESTful Web服务,但是当URI路径相同时,CXF与右目标方法不匹配,但只有@QueryParam参数不同 我知道@QueryParam参数是可选的,正如所说的:“这两种方法在URI路径级别上都是不明确的,似乎第一种方法获胜” 例:http://mydomain/property?key=sthA或http://mydomain/property?value=sthB,很遗憾,CXF将匹配相同的方法 @Path("/property") @Produces(MediaTyp
@QueryParam
参数不同
我知道@QueryParam
参数是可选的,正如所说的:“这两种方法在URI路径级别上都是不明确的,似乎第一种方法获胜”
例: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 */
}
@Path(“/property”)
@产生(MediaType.APPLICATION_JSON)
@使用(MediaType.APPLICATION_JSON)
公共接口属性服务{
@得到
@路径(“/{id}”)
AppSetting findPropertyById(@PathParam(“id”)字符串id);/*/property/123*/
@得到
属性findPropertyByKey(@QueryParam(“key”)字符串键);/*/Property?key=sth*/
@得到
列出getPropertiesByValue(@QueryParam(“value”)字符串值);/*/property?value=sth*/
}
那么,以下两者之间的最佳解决方案是什么:
- 有一个方法可以处理特定URI路径的任何可能的
参数(此处为“/property?[key=sthA][&value=sthB][…]”)@QueryParam
- 或者直接在
注释的值中将一些RegExp设置为“help”CXF,以将URI路径与正确的方法匹配(此处:“/property?key=sthA”应将该方法与“@Path
”注释匹配)@Path({key:.*})
- 或任何其他可能的解决方案
Thks在这种情况下,像/property/id/{id}和/property/key/{key}这样的URL可能会更好。这是一种解决方案,但不适合URI路径对应于资源和
@QueryParam
仅用于过滤结果列表的概念……在这种情况下,如果您的正则表达式解决方案有效,我将选择这个好消息:-)目前我已经为PoC选择了第一个解决方案(每个URI路径的方法)。