我在@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,则会使一个副本无效.否则,由于缓存中存在不同的版本,您可能会开始获得不一致的结果.
你可以这样做,但是,只有一个重载实际上应该返回带有200的响应体.其他重载应该返回303重定向到返回主体的URI.
这将确保缓存只有一个资源副本,如果在主URI上执行PUT或POST,则会使一个副本无效.否则,由于缓存中存在不同的版本,您可能会开始获得不一致的结果.