当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《关于REST中http方法重载的建议》经验,为你挑选了1个好方法。

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

所以我现在可以通过/ project/ProjectNumber1000或/ project/12345调用我的getProject REST服务

@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)
    {
         ...
    }
}

Darrel Mille.. 6

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

这将确保缓存只有一个资源副本,如果在主URI上执行PUT或POST,则会使一个副本无效.否则,由于缓存中存在不同的版本,您可能会开始获得不一致的结果.



1> Darrel Mille..:

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

这将确保缓存只有一个资源副本,如果在主URI上执行PUT或POST,则会使一个副本无效.否则,由于缓存中存在不同的版本,您可能会开始获得不一致的结果.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有