1. Обзор
Чтобы упростить разработку веб-сервисов REST и их клиентов на Java, стандартная и портативная реализация JAX-RS API был разработан, который называется Джерси.
Джерси является основой с открытым исходным кодом для разработки веб-сервисов REST, которые обеспечивают поддержку JAX-RS API и служит JAX-RS эталонная реализация.
В этом учебнике мы посмотрим, как мы можем создать Джерси орган реагирования с различными типами средств массовой информации.
2. Мейвен зависимостей
Во-первых, нам нужны следующие зависимости, включенные в пом.xml файл:
org.glassfish.jersey.bundles jaxrs-ri 2.26 org.glassfish.jersey.core jersey-server 2.26
Последняя версия JAX-RS можно найти на jaxrs-ри , и Джерси сервер можно найти на Джерси-сервер
3. Ответ в Джерси
Естественно, существуют различные способы построения ответа с помощью Джерси , и мы будем смотреть на то, как мы можем построить их ниже.
Все примеры здесь http GET запросы, и мы будем использовать локон команды для проверки ресурсов.
3.1. Ok Текстовый ответ
Конечная точка, показанная здесь, является простым примером того, как простой текст может быть возвращен в качестве ответа Джерси:
@GET @Path("/ok") public Response getOkResponse() { String message = "This is a text response"; return Response .status(Response.Status.OK) .entity(message) .build(); }
Мы можем сделать HTTP GET с помощью локон для проверки ответа:
curl -XGET http://localhost:8080/jersey/response/ok
Эта конечная точка отправит обратно ответ следующим образом:
This is a text response
Когда тип мультимедиа не указан, Джерси будет по умолчанию текст/простой.
3.2. Ответ на ошибку
Ошибки также могут быть отправлены обратно в качестве ответа Джерси:
@GET @Path("/not_ok") public Response getNOkTextResponse() { String message = "There was an internal server error"; return Response .status(Response.Status.INTERNAL_SERVER_ERROR) .entity(message) .build(); }
Чтобы проверить ответ, мы можем сделать запрос HTTP GET с помощью локон :
curl -XGET http://localhost:8080/jersey/response/not_ok
Сообщение об ошибке будет отправлено обратно в ответ:
There was an internal server error
3.3. Ответ на простой текст
Мы также можем вернуть простые простые текстовые ответы :
@GET @Path("/text_plain") public Response getTextResponseTypeDefined() { String message = "This is a plain text response"; return Response .status(Response.Status.OK) .entity(message) .type(MediaType.TEXT_PLAIN) .build(); }
Опять же, мы можем сделать HTTP GET с помощью локон для проверки ответа:
curl -XGET http://localhost:8080/jersey/response/text_plain
Ответ будет следующим:
This is a plain text response
Такой же результат можно было бы достичь и с помощью Производит аннотация вместо использования типа () метод в Ответные :
@GET @Path("/text_plain_annotation") @Produces({ MediaType.TEXT_PLAIN }) public Response getTextResponseTypeAnnotated() { String message = "This is a plain text response via annotation"; return Response .status(Response.Status.OK) .entity(message) .build(); }
Мы можем сделать проверку ответа с помощью локон :
curl -XGET http://localhost:8080/jersey/response/text_plain_annotation
Вот ответ:
This is a plain text response via annotation
3.4. JSON Ответ с использованием POJO
Простая Обычный старый Java-объект (POJO) также может быть использован для создания ответа .
У нас очень простая Лицо POJO показано ниже, которые мы будем использовать для создания ответа:
public class Person { String name; String address; // standard constructor // standard getters and setters }
Лицо POJO теперь можно использовать для возвращение JSON в качестве органа реагирования :
@GET @Path("/pojo") public Response getPojoResponse() { Person person = new Person("Abhinayak", "Nepal"); return Response .status(Response.Status.OK) .entity(person) .build(); }
Работа этой конечной точки GET может быть проверена – через следующие локон команда:
curl -XGET http://localhost:8080/jersey/response/pojo
Лицо POJO будет преобразован в JSON и отправлен обратно в качестве ответа:
{"address":"Nepal","name":"Abhinayak"}
3.5. JSON Ответ с помощью простой строки
Мы можем использовать предварительно сформатированные строки для создания ответной , и это можно сделать просто.
Следующая конечная точка является примером того, как JSON представлен в качестве Струнные могут быть отправлены обратно в качестве ответа JSON в Джерси:
@GET @Path("/json") public Response getJsonResponse() { String message = "{\"hello\": \"This is a JSON response\"}"; return Response .status(Response.Status.OK) .entity(message) .type(MediaType.APPLICATION_JSON) .build(); }
Это можно проверить, выявив HTTP GET с помощью локон для проверки ответа:
curl -XGET http://localhost:8080/jersey/response/json
Вызов этого ресурса вернет JSON:
{"hello":"This is a JSON response"}
Такая же схема применяется и к другим общим типам мультимедиа, таким как XML или HTML . Мы просто должны уведомить Джерси, что это XML или HTML с помощью MediaType.TEXT_XML или MediaType.TEXT_HTML и Джерси разберется с остальными.
4. Заключение
В этой быстрой статье мы построили ответы Джерси (JAX-RS) для различных типов мультимедиа.
Все фрагменты кода, упомянутые в статье, можно найти в более на GitHub .