#web-services #rest #jakarta-ee #java-ee-6
#веб-сервисы #rest #джакарта-ee #java-ee-6
Вопрос:
Цель состоит в том, чтобы создать веб-службу с полным доступом с использованием JAX-RS, которая будет выборочно возвращать результат либо в формате json, либо в формате xml, в зависимости от запроса пользователя. Например, если пользователь отправляет запрос GET следующим образом, результаты будут возвращены в формате json:
http://api.myurl.com/order/1234.json
Аналогично, если пользователь отправит get в следующем запросе, результаты будут возвращены в формате xml:
http://api.myurl.com/order/123.xml
Я не хочу использовать параметры запроса для этого (т. Е. http://api.myurl.com/order/123?format=json
). Использование постфиксации .json
или .xml
мне кажется более интуитивным.
Какая стратегия была бы наилучшей для выполнения этого с использованием JAX-RS api?
Ответ №1:
Одним из способов было бы более тщательное использование @Path
аннотаций:
@GET
@Path("/order/{id}.xml")
@Produces("application/xml")
public Order getOrderAsXML(@PathParam("id") int id) {
return realGetOrder(id);
}
@GET
@Path("/order/{id}.json")
@Produces("application/json")
public Order getOrderAsJSON(@PathParam("id") int id) {
return realGetOrder(id);
}
private Order realGetOrder(int id) {
// ...
}
Однако я был бы склонен использовать единый метод, обслуживающий оба, и позволить клиенту и поддерживающей платформе JAX-RS использовать согласование контента для выбора метода сериализации.