Джерси остальные веб-сервисы несколько форматов - PullRequest
1 голос
/ 22 октября 2010

как вернуть правильное представление на основе URI

пример

/ text.json должен вернуть json

/ text.xml должен вернуть xml

/ text должен возвращать обычный текст

Все они сопоставлены одному и тому же методу

@ GET public Contact getContacts () {

}

1 Ответ

3 голосов
/ 04 ноября 2010

Ответ можно найти в этом посте: http://jersey.576304.n2.nabble.com/extension-custom-negotiation-td3078866.html

По сути вы настраиваете ResourceConfig https://jersey.dev.java.net/nonav/apidocs/1.1.0-ea/jersey/com/sun/jersey/api/core/ResourceConfig.html

Вам необходимо расширить реализацию ResourceConfig [1] и переопределить метод сопоставления медиа-типов.

Например, вы можете сделать следующее:

package foo;

public class MyResourceConfig extends PackagesResourceConfig {
    public PackagesResourceConfig(Map<String, Object> props) {
        super(props);
    }

    public Map<String, MediaType> getMediaTypeMappings() {
        Map<String, MediaType> m = new HashMap<String, MediaType> ();
        m.put("json", MediaType.APPLICATION_JSON_TYPE);
        m.put("xml", MediaType.APPLICATION_XML_TYPE);
        return m;
    }
}

и вы можете зарегистрировать свой «MyResourceConfig», как описано здесь:

https://jersey.dev.java.net/documentation/1.1.0-ea/user-guide.html#d4e115

В приведенном выше примере ваш web.xml должен будет содержать контейнер:

<web-app>
     <servlet>
         <servlet-name>Jersey Web Application</servlet-name>
         <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
         <init-param>
             <param-name>javax.ws.rs.Application</param-name>
             <param-value>foo.MyResourceConfig</param-value>
         </init-param>
         <init-param>
             <param-name>com.sun.jersey.config.property.packages</param-name>
             <param-value>org.foo.rest;org.bar.rest</param-value>
         </init-param>
     </servlet>
     ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...