Лучшая альтернатива Джерси/Джексону для создания API JSON REST?
Мне нужно создать серверную часть JSON-REST API, и я играл с Джерси, чтобы сделать это (используя функцию JSON-POJO mapping).
Проблема в том, что даже тестирование простейшего возможного варианта использования потребовало нескольких вопросов здесь, на SO, и довольно много охоты вокруг. Короче говоря, это не очень гибкий API в стиле, скажем, JSoup, он, похоже, является инструментом, который исходит из эпохи, когда все было XML, а затем было модифицировано для JSON.
Вы можете увидеть это, например, в требовании, чтобы объекты POJO должны были быть аннотированы с помощью @XmlRootElement, хотя ничто из того, что я делаю, связано с XML.
Мне интересно, есть ли другие библиотеки, возможно, более поздние, что я должен рассмотреть для этого, что может быть проще в использовании, чем Джерси?
Ответы
Ответ 1
Джерси может сериализовать POJO в JSON без каких-либо комментариев с помощью Jackson. Вы настроите это, установив для свойства JSONConfiguration.FEATURE_POJO_MAPPING
значение true
.
В web.xml
добавьте следующий параметр init для сервлета:
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
См. документацию в Джерси
Ответ 2
Я очень рекомендую JBoss RESTEasy для API REST. Я использовал его по нескольким проектам и нашел, что это тривиально для настройки. Он также прекрасно сочетается с Spring, если вам это нужно.
Я использовал как Jackson, так и Gson для поддержки JSON с RESTEasy, и это довольно просто. Все, что вы делаете, это аннотировать POJO с аннотациями JAXB и включать соответствующие библиотеки.
Еще одна действительно большая часть RESTEasy - хорошая поддержка многочастных данных формы. Они предоставляют аннотацию @MultipartForm, которая позволяет связывать многопользовательскую форму с POJO без написания кода... работает слайком.
Я бы посоветовал против Spring MVC для REST, потому что он не соответствует JAX-RS. Использование JAX-RS-совместимого интерфейса дает вам немного лучшую переносимость, если вы решите переключиться на другую реализацию по дороге.
Ответ 3
для преобразования json в pojos: gson и jackson. Для Restful Я бы использовал spring или restlet.
Ответ 4
Примечание: Я EclipseLink JAXB (MOXy), член группы JAXB (JSR-222) и вкладчик Джерси.
С Джерси или любым проектом JAX-RS вы можете использовать MessageBodyReader
/MessageBodyWriter
для полного контроля над привязкой JSON. Ниже приведен пример использования этого механизма для использования MOXy в качестве поставщика JSON.
Ответ 5
Это ответ смещения, но мы используем Snow для всех наших корпоративных и социальных приложений, и он чрезвычайно легкий, полностью основанный на Guice и позволяющий связать любой вызов REST с любым методом Java (с управляемым объектом от Guice). Очень гибкий и простой.
http://britesnow.com/snow
Я создатель этой микроархитектуры, поэтому я хотел бы получить ваши отзывы.
Ответ 6
Как Нимхимпский сказал, этот хомут сделает это из коробки. Кроме того, если ваш клиент также является Java, вы можете абстрагировать функциональность в интерфейсе и довольно легко обернуть его прокси-сервером на стороне клиента. На этой странице руководства показано, как сделать то, что я упомянул здесь.
Ответ 7
Вы можете попробовать JEST, он работает над OpenJPA.