Подтвердить что ты не робот

Лучшая альтернатива Джерси/Джексону для создания API JSON REST?

Мне нужно создать серверную часть JSON-REST API, и я играл с Джерси, чтобы сделать это (используя функцию JSON-POJO mapping).

Проблема в том, что даже тестирование простейшего возможного варианта использования потребовало нескольких вопросов здесь, на SO, и довольно много охоты вокруг. Короче говоря, это не очень гибкий API в стиле, скажем, JSoup, он, похоже, является инструментом, который исходит из эпохи, когда все было XML, а затем было модифицировано для JSON.

Вы можете увидеть это, например, в требовании, чтобы объекты POJO должны были быть аннотированы с помощью @XmlRootElement, хотя ничто из того, что я делаю, связано с XML.

Мне интересно, есть ли другие библиотеки, возможно, более поздние, что я должен рассмотреть для этого, что может быть проще в использовании, чем Джерси?

4b9b3361

Ответ 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-совместимого интерфейса дает вам немного лучшую переносимость, если вы решите переключиться на другую реализацию по дороге.

Ответ 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.