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

Клиент JAX-RS с Джерси

Быстрое знакомство с клиентом JAX-RS с использованием Джерси 2.

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

1. Обзор

Джерси является платформой с открытым исходным кодом для разработки веб-сервисов RESTFul. Он также имеет большие встроенные возможности клиента.

В этом быстром учебнике мы изумим создание клиента JAX-RS с помощью Джерси 2 .

Для обсуждения вопроса о создании RESTful Web Services с использованием Джерси, пожалуйста, обратитесь к этой статье .

Дальнейшее чтение:

REST API с Джерси и весной

CORS в JAX-RS

Фильтры и перехватчики Джерси

2. Мейвен зависимостей

Начнем с добавления необходимых зависимостей (для клиента Jersey JAX-RS) в пом.xml :


    org.glassfish.jersey.core
    jersey-client
    2.25.1

Чтобы использовать Jackson 2.x в качестве поставщика JSON:


    org.glassfish.jersey.media
    jersey-media-json-jackson
    2.25.1

Последнюю версию этих зависимостей можно найти на Джерси-клиент и Джерси-медиа-Json-джексон .

3. RESTFul Клиент в Джерси

Мы разработаем клиента JAX-RS для потребления API JSON и XML REST, которые мы разработали здесь (мы должны убедиться, что служба развернута и URL доступен).

3.1. Класс представительства ресурсов

Давайте посмотрим на класс представления ресурсов:

@XmlRootElement
public class Employee {
    private int id;
    private String firstName;

    // standard getters and setters
}

JaxB аннотации, как @XmlRootElement требуется только в том случае, если требуется поддержка XML.

3.2. Создание экземпляра клиента

Первое, что нам нужно, это экземпляр Клиентская :

Client client = ClientBuilder.newClient();

3.3. Создание WebTarget

Как только у нас Клиентская например, мы можем создать WebTarget использование URI целевого веб-ресурса:

WebTarget webTarget 
  = client.target("http://localhost:8082/spring-jersey");

Использование WebTarget , мы можем определить путь к определенному ресурсу:

WebTarget employeeWebTarget 
  = webTarget.path("resources/employees");

3.4. Создание вызова запроса HTTP

Экземпляр строителя вызова создается одним из WebTarget.request () методика:

Invocation.Builder invocationBuilder 
  = employeeWebTarget.request(MediaType.APPLICATION_JSON);

Для формата XML MediaType.APPLICATION_XML могут быть использованы.

3.5. Ссылаясь на запросы HTTP

Ссылаясь на HTTP GET:

Response response 
  = invocationBuilder.get(Employee.class);

Ссылаясь на HTTP POST:

Response response 
  = invocationBuilder
  .post(Entity.entity(employee, MediaType.APPLICATION_JSON);

3.6. Образец клиента REST

Давайте начнем писать простой клиент REST. getJsonEmployee () метод извлечения Сотрудник объект, основанный на id . JSON вернулся к ВЕБ-сервис REST дезериализована до Сотрудник объект перед возвращением.

Эффективное использование API JAX-RS для создания веб-цели, создания вызова и вызова запроса GET HTTP:

public class RestClient {
 
    private static final String REST_URI 
      = "http://localhost:8082/spring-jersey/resources/employees";
 
    private Client client = ClientBuilder.newClient();

    public Employee getJsonEmployee(int id) {
        return client
          .target(REST_URI)
          .path(String.valueOf(id))
          .request(MediaType.APPLICATION_JSON)
          .get(Employee.class);
    }
    //...
}

Давайте теперь добавим метод для запроса POST HTTP. создатьJsonEmployee () метод создает Сотрудник ссылаясь на ВЕБ-сервис REST для Сотрудник создание. API клиента внутренне сериализирует Сотрудник возражения против JSON, прежде чем ссылаться на метод HTTP POST:

public Response createJsonEmployee(Employee emp) {
    return client
      .target(REST_URI)
      .request(MediaType.APPLICATION_JSON)
      .post(Entity.entity(emp, MediaType.APPLICATION_JSON));
}

4. Тестирование клиента

Давайте проверить нашего клиента с JUnit:

public class JerseyClientLiveTest {
 
    public static final int HTTP_CREATED = 201;
    private RestClient client = new RestClient();

    @Test
    public void givenCorrectObject_whenCorrectJsonRequest_thenResponseCodeCreated() {
        Employee emp = new Employee(6, "Johny");

        Response response = client.createJsonEmployee(emp);

        assertEquals(response.getStatus(), HTTP_CREATED);
    }
}

5. Заключение

В этой статье мы представили клиента JAX-RS с помощью Джерси 2 и разработали простого клиента RESTFul Java.

Как всегда, полный исходный код доступен в этот проект Github .