泽西岛 - POST后重定向到外部URL

Vuk*_*vić 17 java rest jersey

我正在使用Jersey来创建REST API.我有一个POST方法,作为该方法的响应,用户应该被重定向到自定义URL,就像http://example.com不必与API相关.

我在这里看到关于这个主题的其他类似问题,但没有发现任何我可以使用的问题.

sum*_*tsu 33

我建议改变JAX-RS注释方法的签名以返回一个javax.ws.rs.core.Response对象.根据您是希望重定向是永久性还是临时性(即客户端是否应更新其内部引用以反映新地址),该方法应构建并返回Response对应于HTTP-301(永久重定向)或HTTP的-302(临时重定向)状态码.

以下是Jersey文档中有关如何返回自定义HTTP响应的说明:https://jersey.java.net/documentation/latest/representations.html#d0e5151.我没有测试过以下代码片段,但我认为对于HTTP-301,代码看起来像这样:

@POST
public Response yourAPIMethod() {
    URI targetURIForRedirection = ...;
    return Response.seeOther(targetURIForRedirection).build();
}
Run Code Online (Sandbox Code Playgroud)

......或者这个,对于HTTP-302:

@POST
public Response yourAPIMethod() {
    URI targetURIForRedirection = ...;
    return Response.temporaryRedirect(targetURIForRedirection).build();
}
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚尝试了这些,似乎从 2.23 Jersey 返回一个 303 for seeOther 和一个 307 fortemporaryRedirect(这分别比 301 Moved Permanently 和 302 Found 更有意义)。在 301 上缓存真的会搞砸 OP 的用例。 (2认同)