Java 关于REST中http方法重载的建议

Java 关于REST中http方法重载的建议,java,rest,overloading,jax-rs,Java,Rest,Overloading,Jax Rs,我在@Path中使用了一个正则表达式来实现重载,起初我认为它非常简洁,但重载方法通常不是好的实践。这同样适用于RESTful web服务吗?有没有更好的方法使用JAX-RS实现这一点 因此,我现在可以通过/project/ProjectNumber1000或/project/12345调用我的getprojectrest服务 @Path("/project") public class ProjectPropertiesResource { @GET @Produces(Medi

我在@Path中使用了一个正则表达式来实现重载,起初我认为它非常简洁,但重载方法通常不是好的实践。这同样适用于RESTful web服务吗?有没有更好的方法使用JAX-RS实现这一点

因此,我现在可以通过/project/ProjectNumber1000或/project/12345调用我的getprojectrest服务

@Path("/project")
public class ProjectPropertiesResource
{
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/{name : [a-zA-Z]+}")
    public Response getProjectPropertiesByName(@PathParam("name") String name)
    {
         ...
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/{id : \\d+}")
    public Response getProjectPropertiesById(@PathParam("id") long id)
    {
         ...
    }
}

但是,您可以这样做,实际上只有一个重载应该返回带有200的响应体。其他重载应该返回303重定向到返回主体的URI


这将确保缓存中只有一个资源副本,如果您在主URI上放置或发布,则会使该副本无效。否则,由于缓存中存在不同的版本,您可能会得到不一致的结果。

可能只有我一个人,但我在您的示例中没有看到任何重载。两个方法都有不同的名称。我已经“重载”了访问这些方法的路径。方法本身有不同的名称,因为我通常不使用重载。好的,这是一个很好的观点,所以我会在其中一个方法中使用Response.temporaryRedirect,类似的东西。303实际上是“查看其他”而不是“临时重定向”。好的,在POST后重定向(又名POST/redirect/GET)模式中使用的“重定向”。JavaDoc中的注释吓跑了我