Рубрики
Без рубрики

Установить орган реагирования в JAX-RS

Узнайте, как настроить орган реагирования JAX-RS для различных типов мультимедиа

Автор оригинала: baeldung.

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 .