JAX-RS Джерси - Как форсировать Responte ContentType? Перезаписать согласование содержимого - PullRequest
3 голосов
/ 09 сентября 2010

Джерси определяет запросы, просматривая заголовок принятия. У меня есть запрос, который принимает только текст / * - Как я могу заставить ответ быть, например, application / json?

@POST
@Path("/create")
@Produces(MediaType.APPLICATION_JSON)
public MyResponseObject create() {
    return new MyResponseObject();
}

Если запрос направлен на создание, которое принимает только текст / * Джерси вернет 500. Есть ли способ обойти эту проблему? (Я не могу изменить заголовок подтверждения запросов).

Ответы [ 2 ]

5 голосов
/ 13 июня 2011

Джерси также поддерживает это через ResourceConfig свойство PROPERTY_MEDIA_TYPE_MAPPINGS, которое вы можете настроить в своем web.xml или программно через API-интерфейсы Джерси, как показано ниже:

 DefaultResourceConfig rc = new DefaultResourceConfig(MyResource.class);
 rc.getMediaTypeMappings().put("json", MediaType.APPLICATION_JSON_TYPE);
 rc.getMediaTypeMappings().put("xml", MediaType.APPLICATION_XML_TYPE);
 SimpleServerFactory.create("http://localhost:9090", rc);

Вы можете принудительно согласовать тип контентасуффиксом .json или .xml к вашему URL.

4 голосов
/ 09 сентября 2010

Я решил это с помощью фильтра сервлетов:

http://www.zienit.nl/blog/2010/01/rest/control-jax-rs-content-negotiation-with-filters

...