RESTful API 中的 URL 作为路径参数会导致错误的请求
我们正在使用 jersey (1.9.1) 和 tomcat 5.5 开发一个 Restful api。 给定的资源由一个 urn 标识,我们希望解决该资源的特定实例。为了实现这一点,我们使用了以下代码:
@Path("/XXXs")
public interface XXXResource {
@GET
@Path("{id}")
@Produces({ MediaType.APPLICATION_JSON })
XXXInfo getXXX(@PathParam("id") String id);
}
这个想法是使用以下 url 来寻址此资源:
http://localhost:8080/restapi/XXXs/http%3A%2F%2Fns.something.com%2FXXX%2F2
解码后的路径参数值应为: http://ns.something.com/XXX/2
但是,当我使用编码后的 url 我从 tomcat 收到错误的请求消息。所以我的问题是:
- 使用 Urn 作为路径参数是否正确?
- 为什么 tomcat 认为这个请求是一个错误的请求?
以防万一,我更改了方法的签名,以便从查询字符串中获取参数,并且它工作正常,但我希望参数成为路径的一部分。
谢谢。
We are developing a restful api using jersey (1.9.1) and tomcat 5.5.
A given resource is identified with a urn and we would like to address a specific instance of that resource. In order to achieve this, we used the following code:
@Path("/XXXs")
public interface XXXResource {
@GET
@Path("{id}")
@Produces({ MediaType.APPLICATION_JSON })
XXXInfo getXXX(@PathParam("id") String id);
}
The idea is to address this resource using the following url:
http://localhost:8080/restapi/XXXs/http%3A%2F%2Fns.something.com%2FXXX%2F2
The decoded path param value should be:
http://ns.something.com/XXX/2
However, when I make the request using the encoded url I get a bad request message from tomcat. So my questions are:
- Is it correct to use a Urn as a path parameter?
- Why is tomcat considering this request as a bad request?
Just in case, I changed the signature of the method so that the parameter is taken from the query string and it worked fine, but I want the parameter to be part of the path.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好的,我通过在 catalina.properties 中添加以下行解决了这个问题:
Ok, I solved it by adding the following line in catalina.properties: