Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java CXF不';根据QueryParam参数的不同,无法匹配正确的目标方法_Java_Rest_Jakarta Ee_Cxf - Fatal编程技术网

Java CXF不';根据QueryParam参数的不同,无法匹配正确的目标方法

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

我正在编写一个RESTful Web服务,但是当URI路径相同时,CXF与右目标方法不匹配,但只有
@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路径的任何可能的
    @QueryParam
    参数(此处为“/property?[key=sthA][&value=sthB][…]”)

  • 或者直接在
    @Path
    注释的值中将一些RegExp设置为“help”CXF,以将URI路径与正确的方法匹配(此处:“/property?key=sthA”应将该方法与“
    @Path({key:.*})
    ”注释匹配)

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

?


Thks

在这种情况下,像/property/id/{id}和/property/key/{key}这样的URL可能会更好。这是一种解决方案,但不适合URI路径对应于资源和
@QueryParam
仅用于过滤结果列表的概念……在这种情况下,如果您的正则表达式解决方案有效,我将选择这个好消息:-)目前我已经为PoC选择了第一个解决方案(每个URI路径的方法)。