RESTEASY002142:多个资源方法匹配请求
RESTEASY002142: Multiple resource methods match request
我正在关注两个完全不同的 URL,我无法解释原因:
RESTEASY002142:
Multiple resource methods match request "GET /devices/distinctValues/3".
Selecting one.
Matching methods:
[public javax.ws.rs.core.Response
mypackage.DevService.getDistinctValues(int) throws java.lang.Exception,
public javax.ws.rs.core.Response
mypackage.DevRESTService.getDevice(int,java.lang.String)
throws java.lang.Exception]
不应出现此警告,因为 URLS 完全不同。如果有人知道为什么会这样:
两种方法的 URL:
getDevice
:
@GET
@Path("devices/{customerId}/{deviceIds}")
@Produces({ "application/json" })
getDistinctValues
:
@GET
@Path("devices/distinctValues/{customerId}")
@Consumes("application/json")
@Produces("application/json")
出现警告是因为您的请求字符串可以匹配两个路径模板。请求 "devices/distinctValues/3"
- 匹配
devices/distinctValues/{customerId}
customerId = "3"
- 匹配
devices/{customerId}/{deviceIds}
customerId = "distinctValues"
和 deviceIds = "3"
.
并且由于您的请求是 String
,因此无法告诉 customerId
它不能接受 "distinctValues"
。
作为解决方法,您可以指定一个正则表达式,如链接问题中所示,或者使用 RESTEasy proxy framework,它基本上是服务器(您的 JAX-RS 资源)和客户端使用的共享接口,然后你就有了一种带有类型解析的通用语言。请注意,文档示例中有一个拼写错误。
我正在关注两个完全不同的 URL,我无法解释原因:
RESTEASY002142:
Multiple resource methods match request "GET /devices/distinctValues/3".
Selecting one.
Matching methods:
[public javax.ws.rs.core.Response
mypackage.DevService.getDistinctValues(int) throws java.lang.Exception,
public javax.ws.rs.core.Response
mypackage.DevRESTService.getDevice(int,java.lang.String)
throws java.lang.Exception]
不应出现此警告,因为 URLS 完全不同。如果有人知道为什么会这样:
两种方法的 URL:
getDevice
:
@GET
@Path("devices/{customerId}/{deviceIds}")
@Produces({ "application/json" })
getDistinctValues
:
@GET
@Path("devices/distinctValues/{customerId}")
@Consumes("application/json")
@Produces("application/json")
出现警告是因为您的请求字符串可以匹配两个路径模板。请求 "devices/distinctValues/3"
- 匹配
devices/distinctValues/{customerId}
customerId = "3"
- 匹配
devices/{customerId}/{deviceIds}
customerId = "distinctValues"
和deviceIds = "3"
.
String
,因此无法告诉 customerId
它不能接受 "distinctValues"
。
作为解决方法,您可以指定一个正则表达式,如链接问题中所示,或者使用 RESTEasy proxy framework,它基本上是服务器(您的 JAX-RS 资源)和客户端使用的共享接口,然后你就有了一种带有类型解析的通用语言。请注意,文档示例中有一个拼写错误。