【问题标题】:Jersey URL Mapping泽西 URL 映射
【发布时间】:2017-10-15 02:41:48
【问题描述】:

我们有一个带有以下映射的 Jersey 资源。

@GET
@Path("{key}/{ignored:.*}")
@Produces(MediaType.WILDCARD)
public Response getKeyCodes(@PathParam("key") final String key) {
   String output = "Jersey say : " + key;
   return Response.status(200).entity(output).build();
}

想法是将每个 url 与此 get 资源匹配,并将 url 的第一部分视为键。

它主要工作除了以下网址。对于这个请求,我收到 400 Bad request。任何想法为什么它不起作用?

http://localhost:8080/rest/hello/8a439079fea971592e905451b81abec883c767f7/Hamilton-Beach-17201-Steam-Irons%5C-BlueWhite.jpg

我还注意到如果我们从上面的 url 中删除 %5C(当解码它的 "\") 是有效的。对此的任何进一步见解都会对我有很大帮助。

【问题讨论】:

    标签: java jersey restful-url


    【解决方案1】:

    这很好。我猜你的方法是在寻找一些名称为 Hamilton-Beach-17201-Steam-Irons\-BlueWhite.jpg 的文件,并且因为 \ 被编码为 %C 您在服务中的文字字符串搜索可能无法正常工作,因为您必须确定字符串。

    【讨论】:

    • 我的方法中真的没有任何代码。为了更好地理解,编辑了我的问题并添加了我所有的方法代码。我只注意到它永远不会按照我的方法进行。
    • 然后检查您的设置。 path 的值是自动 URL 解码的,除非使用 Encoded 注释禁用它。我看不到,因此您的服务器将收到 Hamilton-Beach-17201-Steam-Irons\-BlueWhite.jpg 。如果在编码 URL 中收到的值未按预期解码,则在服务器上打印该值。 @anil
    • 运气不好,请求甚至没有到达我的休息资源或泽西 servlet 类“ServletContainer.java”
    • 您是否不要在路径键本身 {key :.+} 本身中给出斜杠正则表达式。如果这不起作用,我将在某些时候打印值共享一个有效的球衣服务。
    • 我按照建议修改了我的代码,但它仍然没有工作。我不认为这是我的代码的问题,因为请求甚至没有到达 Jersey servlet 服务方法。
    猜你喜欢
    • 2014-06-17
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多