Поддержка нескольких типов контента с использованием JAX-RS - PullRequest
1 голос
/ 11 июня 2011

Цель состоит в том, чтобы создать полноценный веб-сервис, использующий 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 post-fix мне кажется более интуитивным.

Какова была бы лучшая стратегия для этого с использованием API JAX-RS?

1 Ответ

2 голосов
/ 11 июня 2011

Одним из способов было бы более точное использование @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 использоватьсогласование содержимого для определения метода сериализации.

...