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 .