代码之家  ›  专栏  ›  技术社区  ›  willcodejavaforfood

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

  •  2
  • willcodejavaforfood  · 技术社区  · 14 年前

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

    @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)
        {
             ...
        }
    }
    
    1 回复  |  直到 14 年前
        1
  •  6
  •   Darrel Miller    14 年前

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

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