Добро пожаловать в учебник по веб-службам Restful на Java. REST – это аббревиатура для Передачи репрезентативного состояния . REST-это архитектурный стиль для разработки приложений, к которым можно получить доступ по сети. Архитектурный стиль REST был освещен Роем Филдингом в его докторской диссертации в 2000 году.
Веб-службы Restful
Веб-службы Restful-это архитектура клиент-сервер без состояния , в которой веб-службы являются ресурсами и могут быть идентифицированы по их URI.
Клиентские приложения REST могут использовать методы HTTP GET/POST для вызова веб-служб Restful. REST не указывает какой-либо конкретный протокол для использования, но почти во всех случаях он используется по протоколу HTTP/HTTPS. По сравнению с веб-службами SOAP они являются легкими и не соответствуют никаким стандартам. Мы можем использовать XML, JSON, текст или любой другой тип данных для запроса и ответа.
API веб-служб Java RESTful
Java API для веб-служб RESTful (JAX-RS) – это Java API для создания веб-служб REST. JAX-RS использует аннотации для упрощения разработки и развертывания веб-служб. JAX-RS является частью JDK, поэтому вам не нужно ничего включать, чтобы использовать его аннотации.
Аннотации веб-служб Restful
Некоторые из важных аннотаций JAX-RS являются:
@Путь : используется для указания относительного пути к классу и методам. Мы можем получить URI веб-службы, сканируя значение аннотации пути.
@GET , @PUT , @POST , @DELETE и @HEAD : используется для указания типа HTTP – запроса для метода.
@@Производители , @Потребители : используется для указания типов запросов и ответов.
@PathParam : используется для привязки параметра метода к значению пути путем его синтаксического анализа.
Веб-сервисы Restful и МЫЛО
SOAP-это протокол, в то время как REST-это архитектурный стиль.
Сервер SOAP и клиентские приложения тесно связаны и связаны контрактом WSDL, в то время как в веб-службах REST и клиенте контракта нет.
Кривая обучения проста для отдыха по сравнению с веб-сервисами SOAP.
Типы запросов и ответов веб-служб REST могут быть XML, JSON, текстовыми и т.д. в то время как SOAP работает только с XML.
JAX-RS-это Java API для веб-служб REST, в то время как JAX-WS-это Java API для веб-служб SOAP.
Реализации API REST
Существует две основные реализации API JAX-RS.
Джерси : Джерси является эталонной реализацией, предоставленной Sun. Для использования Джерси в качестве реализации JAX-RS все, что нам нужно, это настроить его сервлет в web.xml и добавьте необходимые зависимости. Обратите внимание, что API JAX-RS является частью JDK, а не Джерси, поэтому мы должны добавить его банки зависимостей в наше приложение.
RESTEasy : RESTEasy -это проект JBoss, который обеспечивает реализацию JAX-RS.
Учебник по веб-службам Java Restful
Давайте посмотрим, как легко создать веб-сервис Restful с помощью Jersey, а затем РАССЛАБЬТЕСЬ. Мы будем использовать следующие методы по HTTP и использовать расширение Chrome Postman для их тестирования.
//человек/{идентификатор}/получить манекен
Возвращает фиктивный объект person
ПОЛУЧИТЬ
/человек/добавить
Добавляет человека
ПОСТ
/человек/{идентификатор}/удалить
Удалите человека с “идентификатором” в URL-адресе
ПОЛУЧИТЬ
//человек/получить все
Соберите всех людей
ПОЛУЧИТЬ
/человек/{идентификатор}/получить
Найдите человека с “идентификатором” в URL-адресе
ПОЛУЧИТЬ
Веб-сервисы Jersey Restful
Создайте динамический веб-проект, а затем преобразуйте его в Maven, чтобы получить скелет вашего проекта веб-служб. На рисунке ниже показана структура проекта окончательного проекта.
Давайте посмотрим на зависимости Джерси, которые у нас есть в pom.xml файл.
Нам не требуется добавлять jersey-клиент зависимости, но если вы пишете программу java для вызова веб-службы REST с использованием Jersey, то это необходимо.
Теперь давайте рассмотрим дескриптор развертывания, чтобы узнать, как настроить Jersey для создания нашего веб-приложения.
Это все, что требуется для подключения Jersey в наше веб-приложение, в нашем java-коде мы будем использовать аннотации JAX-RS. Обратите внимание на значение параметра инициализации com.sun.jersey.config.property.packages , чтобы предоставить пакет, который будет проверен на наличие ресурсов и методов веб-службы.
ОСТАЛЬНЫЕ Примеры Классов Моделей
Прежде всего, мы создадим два компонента модели – Person для данных нашего приложения и Response для отправки ответа в клиентские системы. Поскольку мы будем отправлять XML-ответ, компоненты должны быть аннотированы @XmlRootElement , следовательно, у нас есть этот класс.
package com.journaldev.jaxrs.model;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement (name="person")
public class Person {
private String name;
private int age;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString(){
return id+"::"+name+"::"+age;
}
}
package com.journaldev.jaxrs.model;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Response {
private boolean status;
private String message;
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
Обучающие службы веб-служб REST
Основываясь на нашей структуре URL-адресов, ниже приведен интерфейс сервиса и его код реализации.
package com.journaldev.jaxrs.service;
import com.journaldev.jaxrs.model.Person;
import com.journaldev.jaxrs.model.Response;
public interface PersonService {
public Response addPerson(Person p);
public Response deletePerson(int id);
public Person getPerson(int id);
public Person[] getAllPersons();
}
package com.journaldev.jaxrs.service;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.journaldev.jaxrs.model.Person;
import com.journaldev.jaxrs.model.Response;
@Path("/person")
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public class PersonServiceImpl implements PersonService {
private static Map persons = new HashMap();
@Override
@POST
@Path("/add")
public Response addPerson(Person p) {
Response response = new Response();
if(persons.get(p.getId()) != null){
response.setStatus(false);
response.setMessage("Person Already Exists");
return response;
}
persons.put(p.getId(), p);
response.setStatus(true);
response.setMessage("Person created successfully");
return response;
}
@Override
@GET
@Path("/{id}/delete")
public Response deletePerson(@PathParam("id") int id) {
Response response = new Response();
if(persons.get(id) == null){
response.setStatus(false);
response.setMessage("Person Doesn't Exists");
return response;
}
persons.remove(id);
response.setStatus(true);
response.setMessage("Person deleted successfully");
return response;
}
@Override
@GET
@Path("/{id}/get")
public Person getPerson(@PathParam("id") int id) {
return persons.get(id);
}
@GET
@Path("/{id}/getDummy")
public Person getDummyPerson(@PathParam("id") int id) {
Person p = new Person();
p.setAge(99);
p.setName("Dummy");
p.setId(id);
return p;
}
@Override
@GET
@Path("/getAll")
public Person[] getAllPersons() {
Set ids = persons.keySet();
Person[] p = new Person[ids.size()];
int i=0;
for(Integer id : ids){
p[i] = persons.get(id);
i++;
}
return p;
}
}
Большая часть кода не требует пояснений, потратьте некоторое время на ознакомление с аннотациями JAX-RS @Path , @PathParam , @POST , @GET , @Потребляет и @Производит .
Тест веб-служб Restful
Вот и все. Наш веб-сервис готов, просто экспортируйте его в виде файла WAR и поместите в каталог Tomcat webapps или разверните в любом другом контейнере по вашему выбору.
Ниже приведены некоторые из тестов, выполненных с использованием расширения Postman chrome для этого веб-сервиса. Обратите внимание, что мы должны указать значения типа “Принять” и “Содержимое” как “приложение/xml” в заголовке запроса, как показано на рисунке ниже.
получить Манекен
добавлять
получить
Получить все
удалить
Это все для создания веб-сервисов с использованием реализации Jersey JAX-RS. Как вы можете видеть, большая часть кода использует аннотации JAX-RS, а Jersey подключается через дескриптор развертывания и зависимости.
Пример веб-служб RESTEasy RESTful
Мы будем использовать всю бизнес-логику, разработанную в проекте Джерси, но вместо того, чтобы вносить изменения в один и тот же проект, я создал новый проект. Создайте динамический веб-проект и преобразуйте его в проект Maven. Затем скопируйте все классы java – Person, Response, PersonService и PersonServiceImpl. Ниже приведен окончательный проект после того, как мы закончим со всеми изменениями.
Добавьте ниже зависимости RESTEasy в pom.xml файл.
Обратите внимание на параметр инициализации, в котором указывается MyApp класс в качестве значения, здесь мы расширяем javax.ws.rs.core.Приложение класс, как показано ниже.
package com.journaldev.jaxrs.resteasy.app;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.core.Application;
import com.journaldev.jaxrs.service.PersonServiceImpl;
public class MyApp extends Application {
private Set
Тест веб-служб RESTEasy
Вот и все. Наш веб-сервис готов к реализации RESTEasy JAX-RS. Ниже приведены некоторые результаты теста расширения Postman chrome.
получить Манекен
добавлять
получить
Это все для Учебника по веб-службам Restful , Я надеюсь, что вы узнали об аннотациях JAX-RS и поняли преимущества наличия стандартного API, который помог нам повторно использовать код и так легко перейти с Джерси на RESTEasy.