Java 从JAX-RS服务发送重定向

Java 从JAX-RS服务发送重定向,java,redirect,jax-rs,Java,Redirect,Jax Rs,是否可以将JAX-RSWeb服务重定向到另一个网页 与Servletresponse.sendRedirect(“http://test/test.html) JAX-RSWeb服务本身应该重定向。如果相关的话,我使用的是RESTEasy。是的,如果返回类型是响应(或HttpServletResponse),则可以在Jersey或任何JAX-RS实现(包括RESTEasy)中执行此操作 您可以使用以下任一选项: Response.temporaryRedirect(URI) “临时重定向”

是否可以将JAX-RSWeb服务重定向到另一个网页

与Servlet
response.sendRedirect(“http://test/test.html)


JAX-RSWeb服务本身应该重定向。如果相关的话,我使用的是RESTEasy。

是的,如果返回类型是
响应(或
HttpServletResponse
),则可以在Jersey或任何JAX-RS实现(包括RESTEasy)中执行此操作

您可以使用以下任一选项:

Response.temporaryRedirect(URI)


“临时重定向”返回307状态代码,“查看其他”返回303。

扩展上面的smcg@answer

您可以通过使用
ContainerRequestContext.setRequestUri(URI)
更改
ContainerRequestFilter
中的请求上下文来实现这一点。如果您看到JAX-RS规范(第6.2节),就会提到
@PreMatching
请求过滤器。根据文件

对执行带有@prematch注释的ContainerRequestFilter 在匹配资源方法之前接收客户端请求。因此,这种类型的过滤器具有 修改匹配算法的输入(见第3.7.2节),从而改变其结果

一个非常幼稚的过滤器可以是这样的

@PreMatching
class RedirectFilter: ContainerRequestFilter {
    override fun filter(requestContext: ContainerRequestContext?) {

      requestContext!!.setRequestUri(URI.create("<redirect_uri>"))
    }
}
@预匹配
类重定向筛选器:ContainerRequestFilter{
覆盖趣味过滤器(requestContext:ContainerRequestContext?){
requestContext!!.setRequestUri(URI.create(“”)
}
}

对于像我这样寻找302的人来说,答案就在这里

通过查看

Response.temporaryRedirect(URI)
您可以按如下方式自定义响应代码:

Response.status(int).location(URI).build()
请注意,状态代码是在枚举中定义的

Response.Status

例如302是
Response.Status.FOUND

问题不清楚,您的意思是rest响应本身应该重定向,还是应该返回一个调用方可以用作目标url的url?您能详细说明您的问题吗??还不清楚…@BenParsons-REST web服务本身应该重定向。下面是一个完整的示例:这样做是相同的,因为它们都使用javax.ws.rs.core.Response。此链接已断开如果我想返回永久重定向(301),该怎么办?我应该使用临时重定向还是seeOther或其他方法?302呢?
Response.Status