JAX-RS: несколько путей - PullRequest
       14

JAX-RS: несколько путей

41 голосов
/ 24 января 2011

Можно ли сделать что-то подобное?

import javax.ws.rs.GET;
import javax.ws.rs.Path;

public class xxx
{
  @GET
  @Path(value = "path1")
  public Response m1()
  {
    ...
  }

  @GET
  @Path(value = "path2")
  public Response m2()
  {
    ...
  }
}

Я использую RESTEasy.

Ответы [ 3 ]

75 голосов
/ 01 августа 2011
@Path("/{a:path1|path2}")

Из документальных документов: http://docs.jboss.org/resteasy/docs/1.0.2.GA/userguide/html_single/index.html#_Path_and_regular_expression_mappings

16 голосов
/ 24 января 2011

да, вы можете сделать это, хотя вам придется переименовать ваши методы, чтобы их сигнатуры были другими.

Обновление: Проверьте ответ Дитера Киллио, @Path("/{a:path1|path2}") , вероятно, то, что вы хотите ...

public class BlahResource{
    @GET
    @Path("path1")
    public Response m1(){
        return Response.ok("blah").build();
    }

    @GET
    @Path("path2")
    public Response m2(){
        return this.m1();
}

вы можете проверить API JSR-311 и его эталонную реализацию с именем "jersey" там:

JSR311 API

Джерси

10 голосов
/ 21 января 2016

Некоторые дополнительные сведения о аннотации пути ...

В качестве предыдущего состояния ответов регулярные выражения, которые будут использоваться в отображении объявления аннотированного пути:

{" variable-name [ ":" regular-expression ] "} 

Вы можете объявить несколькопути, но есть также иерархия путей, которая не была сразу очевидна для меня, поэтому аннотированный путь класса предшествует следующим аннотациям пути метода.Можно написать следующий класс для краткой опции нескольких путей, которая может быть полезна для управления версиями ресурса.

@Path("/{a:v1|v2}")
@Produces("text/*")
public class BlahResource {

    @GET
    @Path("/blah")
    public Response m1() {
        return Response.ok("blah").build();
    }
}

Обратите внимание, что класс "BlahResource" был объявлен с путем "/ v1"или "/ v2", делающий ресурс доступным как:

$ curl localhost:8080/v1/blah
blah

, а также

$ curl localhost:8080/v2/blah
blah
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...