Рекомендации по перегрузке http-метода в REST - PullRequest
2 голосов
/ 23 августа 2010

Я использовал регулярное выражение в @Path для достижения перегрузки, и сначала я подумал, что это действительно аккуратно, но методы перегрузки обычно не являются хорошей практикой.Относится ли это к веб-сервисам RESTful?Есть ли лучший способ добиться этого с помощью JAX-RS?

Так что теперь я могу вызывать мою службу getProject REST по / project / ProjectNumber1000 или / project / 12345

@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 Ответ

6 голосов
/ 23 августа 2010

Вы можете сделать это, однако, только одна из перегрузок должна фактически возвращать тело ответа с 200. Другие перегрузки должны возвращать перенаправление 303 на URI, который возвращает тело.

Это гарантирует, что у кешей будет только одна копия ресурса, и если вы сделаете PUT или POST для основного URI, вы лишите законной силы одну копию. В противном случае вы можете начать получать противоречивые результаты из-за различных версий, существующих в кэше.

...