Java 从JAX-RS服务发送重定向
是否可以将JAX-RSWeb服务重定向到另一个网页 与ServletJava 从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) “临时重定向”
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