首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RESTEASY002142:多个资源方法匹配请求

RESTEASY002142:多个资源方法匹配请求
EN

Stack Overflow用户
提问于 2017-09-06 18:10:57
回答 1查看 5.3K关注 0票数 5

我正在关注两个完全不同的URL,我无法解释为什么:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
@GET
@Path("devices/{customerId}/{deviceIds}")
@Produces({ "application/json" })

getDistinctValues

代码语言:javascript
运行
复制
@GET
@Path("devices/distinctValues/{customerId}")
@Consumes("application/json")
@Produces("application/json")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-19 08:40:47

出现此警告是因为您的请求字符串可以匹配两个路径模板。请求"devices/distinctValues/3"

  • devices/distinctValues/{customerId}customerId = "3"中匹配
  • devices/{customerId}/{deviceIds}customerId = "distinctValues"deviceIds = "3"中匹配。

没有类型解析,因为您的请求是String,所以无法告诉customerId它不能接受"distinctValues"

作为解决办法,您可以指定regex,如链接问题中所示,或者使用RESTEasy代理框架,它基本上是服务器(您的JAX-RS资源)和客户端使用的共享接口,然后您就有了一种类型解析的通用语言。注意,在文档示例中有一个错误。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46081787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档