Разбор параметров пути 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. Вам нужно использовать некоторую реализацию.