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 .