我使用Jersey创建REST API。我有一个POST方法,作为该方法的响应,用户应该重定向到自定义网址,例如http://example.com
,它不必与API相关。
我在这里看到关于这个主题的其他类似问题,但没有找到我可以使用的任何东西。
答案 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();
}