Jersey 将请求重定向到具有正斜杠的匹配路由

Jersey 将请求重定向到具有正斜杠的匹配路由,jersey,jax-rs,Jersey,Jax Rs,将不带尾随斜杠的路由请求重定向到具有其他匹配路径的匹配控制器的功能。这似乎有效,所以 GET /something 已正确路由到终结点 @Path("/something/") public Response doSomething() { ... } 通常情况下,这很好,这是我所期望的行为,但在某些情况下,我希望以不同的方式对待这两者 例如,我有一个端点服务于动态html,它包含静态资源的相对路径。当请求没有尾随斜杠时,将删除资源404 我知道我可以在html中切换到绝对路径,但我

将不带尾随斜杠的路由请求重定向到具有其他匹配路径的匹配控制器的功能。这似乎有效,所以

GET /something
已正确路由到终结点

@Path("/something/")
public Response doSomething() {
    ...
}
通常情况下,这很好,这是我所期望的行为,但在某些情况下,我希望以不同的方式对待这两者

例如,我有一个端点服务于动态html,它包含静态资源的相对路径。当请求没有尾随斜杠时,将删除资源404

我知道我可以在html中切换到绝对路径,但我想了解是否有方法控制Jax路由来实现这一点

我想这样做:

@Path("/something")
public Response doSomething() {
    ...
}


@Path("/something/")
public Response doSomethingSlightlyDifferent() {
    ...
}

但是这给了我一个
modelvalizationexception
说这两条路径是等价的,这是不允许的。

你从哪里得到这样的想法,jersey允许分别处理以“/”结尾的路径和不以“/”结尾的路径

同样,默认情况下,@Path值可能以“/”结尾,也可能不以“/”结尾,这没有什么区别,因此,以“/”结尾或不以“/”结尾的请求URL都将匹配


jersey允许单独处理以“/”结尾的路径,而不是以“/”结尾的路径,您从何而来

同样,默认情况下,@Path值可能以“/”结尾,也可能不以“/”结尾,这没有什么区别,因此,以“/”结尾或不以“/”结尾的请求URL都将匹配


我不确定我是否完全理解这个问题,但您可以使用regex将斜杠设置为可选的
@Path(“something{slash:(/)?}”)
谢谢您的回答,斜杠是可选的,这似乎是默认的(通常是期望的)行为,但我想分别处理这两个路径。我将对这个问题进行一些澄清。您可以通过内容协商区分相同的路径,即不同的
@产品
当然,但在这种情况下,两者的响应类型是相同的,我只需要将没有尾随斜杠的路径视为唯一路径,而不是与没有正斜杠的路径冲突。我不确定我是否完全理解这个问题,但您可以使用正则表达式将斜杠设置为可选的
@path(“something{slash:(/)?}”)
感谢您的回复,斜杠是可选的,这似乎是默认值(通常需要)行为,但我想分别处理这两条路径。我将对问题进行一些澄清。您可以通过内容协商区分相同的路径,即不同的
@产生
当然,但在这种情况下,两条路径的响应类型将是相同的,我只需要将不带尾随斜杠的路径视为唯一路径,而不是c使用不带正斜杠的路径。我从您链接的文档的“默认”部分获得想法。我正在寻找另一个非默认选项,希望能够支持我的用例。我从“默认”部分获得想法您链接的文档的一部分。我正在寻找其他非默认选项,希望能够支持我的用例。