作为restful api中的路径参数的Url会导致错误的请求

时间:2011-10-31 15:05:34

标签: rest jersey jax-rs tomcat5.5

我们正在使用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);
}

我们的想法是使用以下网址来解决此资源:

http://localhost:8080/restapi/XXXs/http%3A%2F%2Fns.something.com%2FXXX%2F2

解码后的路径参数值应为: http://ns.something.com/XXX/2

但是,当我使用编码的url发出请求时,我从tomcat收到一条错误的请求消息。所以我的问题是:

  • 使用Urn作为路径参数是否正确?
  • 为什么tomcat将此请求视为错误请求?

为了以防万一,我更改了方法的签名,以便从查询字符串中获取参数并且它工作正常,但我希望参数成为路径的一部分。

感谢。

1 个答案:

答案 0 :(得分:5)

好的,我通过在catalina.properties中添加以下行来解决它:

  

org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH =真