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

时间:2014-08-15 16:54:04

标签: java rest jersey

我使用Jersey创建REST API。我有一个POST方法,作为该方法的响应,用户应该重定向到自定义网址,例如http://example.com,它不必与API相关。

我在这里看到关于这个主题的其他类似问题,但没有找到我可以使用的任何东西。

2 个答案:

答案 0 :(得分:30)

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

以下是Jersey文档中有关如何返回自定义HTTP响应的说明:HTTP-302 (temporary redirect)。我还没有对以下代码段进行过测试,但我认为代码看起来像这样,对于HTTP-301:

@POST
public Response yourAPIMethod() {
    URI targetURIForRedirection = ...;
    return Response.seeOther(targetURIForRedirection).build();
}

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

@POST
public Response yourAPIMethod() {
    URI targetURIForRedirection = ...;
    return Response.temporaryRedirect(targetURIForRedirection).build();
}

答案 1 :(得分:0)

这对我有用

 @GET
  @Path("/external-redirect2")
  @Consumes(MediaType.APPLICATION_JSON)
  public Response method2() throws URISyntaxException {

    URI externalUri = new URI("https://in.yahoo.com/?p=us");
    return Response.seeOther(externalUri).build();
  }