Java 使用REST重定向URL的最佳方法

Java 使用REST重定向URL的最佳方法,java,rest,servlets,Java,Rest,Servlets,在以下两种方法中,谁能建议我使用REST重定向URL的最佳方法是什么 1. httpResponse.sendRedirect("URL"); 2. Response.temporaryRedirect(new URI("path")); 重定向有多种形式。HTTP状态代码系列包含: 301永久移动 307临时重定向 这些代码和其他代码具有不同的语义。哪个是正确的取决于你的情况。资源是否已永久移动到新位置?或者重定向只是暂时的?有几种类型的重定向 根据HTTP/1.1的语义和内容的当前参考

在以下两种方法中,谁能建议我使用REST重定向URL的最佳方法是什么

1. httpResponse.sendRedirect("URL");
2. Response.temporaryRedirect(new URI("path"));

重定向有多种形式。HTTP状态代码系列包含:

  • 301永久移动
  • 307临时重定向
这些代码和其他代码具有不同的语义。哪个是正确的取决于你的情况。资源是否已永久移动到新位置?或者重定向只是暂时的?

有几种类型的重定向 根据HTTP/1.1的语义和内容的当前参考,有。他们都是

  • 指示资源可能在某个时间可用的重定向 位置字段提供的不同URI,如 状态代码
    301
    (永久移动)、
    302
    (找到)和
    307
    (临时重定向)

  • 提供匹配资源选择的重定向,每个 能够表示原始请求目标,如
    300
    (多选)状态代码

  • 重定向到由位置标识的其他资源 字段,它可以表示对请求的间接响应,如 在
    303
    (请参阅其他)状态代码中

  • 重定向到以前缓存的结果,如
    304
    (非 修改)状态代码

  • 正确的方法取决于你的需要。然而,这些是最常见的:

    301
    (永久移动)状态代码表示目标 资源已被分配一个新的永久URI和任何未来的URI 对此资源的引用应该使用其中一个封闭的URI。[……]

    303
    (请参阅其他)状态代码表示服务器正在运行 将用户代理重定向到不同的资源,如 Location标头字段中的URI,用于提供 对原始请求的间接响应。[……]

    307
    (临时重定向)状态代码表示目标 资源临时驻留在不同的URI和用户代理下 如果执行自动请求,则不能更改请求方法 重定向到该URI。[……]

    在JAX-RS中执行重定向 根据您在问题中发布的代码,我相信您正在使用API。如果是,您可以按如下方式执行重定向:

    • :
    URI=。。。
    返回Response.status(status.MOVED_permanually).location(uri).build();
    
    • (又名POST/redirect/GET):
    URI=。。。
    返回Response.seeOther(uri.build();
    
    • :
    URI=。。。
    返回Response.temporaryRedirect(uri.build();
    
    有关更多详细信息,请参阅类文档

    使用JAX-RS时可能有用的其他详细信息 您还可以在REST端点中注入:

    @Context
    UriInfo-UriInfo;
    
    并获取一些有用的信息,例如和。在构建用于重定向的URI时,它将非常有用

    具有重定向的资源方法如下所示:

    @Path(“/foo”)
    公共类MyEndpoint{
    @上下文
    私人UriInfo UriInfo;
    @职位
    @产生(MediaType.APPLICATION_JSON)
    公众回应方法(){
    URI=uriInfo.getBaseUriBuilder().path(“bar”).build();
    返回Response.temporaryRedirect(uri.build();
    }
    }