Разбор параметров пути URI в Java

Один из REST apis, который я использую, возвращает URL в следующем формате:

/api/variables{/id}
/api/projects{/id}{?skip}

Похоже, что тот же шаблон URL используется в реализациях JAX-WS в аннотации @Path, так что, надеюсь, уже есть какая-то библиотека, которая может помочь с этой задачей.

Каков наилучший способ разбора URL-адреса, отформатированного таким образом, и заполнение его параметрами? Я бы предпочел использовать некоторые базовые классы библиотеки или Java EE, чтобы избежать пользовательской разработки.

Изменить: чего я хочу добиться:

Strnig template = "/api/projects{/id}{?skip}"; // This is provided by REST service
SomeParser sp = new SomeParser(template);
sp.setParam("id", "1a");
sp.setParam("skip", "20");
sp.getUrl(); // Expected output: /api/projects/1a/?skip=20

В то же время я обнаружил, что URI предоставляются в формате от RFC6570

Вопрос: есть ли готовая библиотека, которая может это сделать?

1 ответ

Используя JAX-RS:

@Path("/api")
public class RestService {

  @Path("/variables/{id}")
  public List<Variable> getVariables(@PathParam("id") String id), 
                                     @QueryParam("skip") @DefaultValue("false") boolean skip) {
      // ...
  }

  @Path("/projects/{id}")
  public List<Project> getProjects(@PathParam("id") String id) {
      // ...
  }

}

Помните, что / находятся за пределами {}.

Примечание. Java EE предоставляет только API. Вам нужно использовать некоторую реализацию.

Другие вопросы по тегам