REST расшифровывается как REpresentational State Transfer. Впервые он был представлен Роем Филдингом в своей диссертации «Архитектурные стили и проектирование сетевых программных архитектур» в 2000 году.
ОТДЫХ — это архитектурный стиль. HTTP — это протокол, который содержит набор архитектурных ограничений REST.
REST основы
- Все в REST рассматривается как ресурс.
- Каждый ресурс идентифицируется URI.
- Использует единые интерфейсы. Ресурсы обрабатываются с использованием операций POST, GET, PUT, DELETE, которые аналогичны операциям Create, Read, update и Delete (CRUD).
- Быть без гражданства. Каждый запрос является независимым запросом. Каждый запрос от клиента к серверу должен содержать всю информацию, необходимую для понимания запроса.
- Связь осуществляется через представительства. Например, XML, JSON
Веб-сервисы RESTful
Веб-службы RESTful широко используются в Интернете как альтернатива веб-службам на основе SOAP благодаря своей простоте. В этом посте будет показано, как создать веб-службу RESTful и клиент с использованием инфраструктуры Jersey, которая расширяет API JAX-RS. Примеры выполняются с использованием Eclipse IDE и Java SE 6.
Создание веб-службы RESTful
- В Eclipse создайте новый динамический веб-проект под названием «RESTfulWS»
-   Загрузите пакет Джерси на молнии отсюда .  Версия Джерси, использованная в этих примерах, — 1.17.1.  После того, как вы распакуете его, у вас будет каталог под названием «jersey-archive-1.17.1».  Внутри найдите каталог lib.  Скопируйте следующие jar-файлы и вставьте их в папку WEB-INF -> lib вашего проекта.  Как только вы это сделаете, добавьте эти файлы в путь сборки вашего проекта.
- ASM-3.1.jar
- Джерси-клиент-1.17.1.jar
- Джерси-ядро-1.17.1.jar
- Джерси-сервер 1.17.1.jar
- Джерси-сервлет-1.17.1.jar
- jsr311-апи-1.1.1.jar
 
- В вашем проекте внутри Java Resources -> src создайте новый пакет под названием «com.eviac.blog.restws». Внутри него создайте новый класс Java под названием «UserInfo». Также включите данный файл web.xml в папку WEB-INF.
UserInfo.java
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | packagecom.eviac.blog.restws;importjavax.ws.rs.GET;importjavax.ws.rs.Path;importjavax.ws.rs.PathParam;importjavax.ws.rs.Produces;importjavax.ws.rs.core.MediaType;/** *  * @author pavithra *  */// @Path here defines class level path. Identifies the URI path that // a resource class will serve requests for.@Path("UserInfoService")publicclassUserInfo { // @GET here defines, this method will method will process HTTP GET // requests. @GET // @Path here defines method level path. Identifies the URI path that a // resource class method will serve requests for. @Path("/name/{i}") // @Produces here defines the media type(s) that the methods // of a resource class can produce. @Produces(MediaType.TEXT_XML) // @PathParam injects the value of URI parameter that defined in @Path // expression, into the method. publicString userName(@PathParam("i") String i) {  String name = i;  return"<User>"+ "<Name>"+ name + "</Name>"+ "</User>"; } @GET @Path("/age/{j}")  @Produces(MediaType.TEXT_XML) publicString userAge(@PathParam("j") intj) {  intage = j;  return"<User>"+ "<Age>"+ age + "</Age>"+ "</User>"; }} | 
web.xml
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | <?xmlversion="1.0"encoding="UTF-8"?>  <web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID"version="2.5">    <display-name>RESTfulWS</display-name>    <servlet>      <servlet-name>Jersey REST Service</servlet-name>      <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>      <init-param>        <param-name>com.sun.jersey.config.property.packages</param-name>        <param-value>com.eviac.blog.restws</param-value>      </init-param>      <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>      <servlet-name>Jersey REST Service</servlet-name>      <url-pattern>/rest/*</url-pattern>    </servlet-mapping>  </web-app> | 
- Чтобы запустить проект, щелкните по нему правой кнопкой мыши и выберите «запустить как -> запустить на сервере».
-   Выполните следующий URL в вашем браузере, и вы увидите результат.
1http://localhost:8080/RESTfulWS/rest/UserInfoService/name/Pavithra
выход
Создание клиента
- Создайте пакет с именем «com.eviac.blog.restclient». Внутри него создайте класс Java с именем «UserInfoClient».
UserInfoClient.java
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | packagecom.eviac.blog.restclient;importjavax.ws.rs.core.MediaType;importcom.sun.jersey.api.client.Client;importcom.sun.jersey.api.client.ClientResponse;importcom.sun.jersey.api.client.WebResource;importcom.sun.jersey.api.client.config.ClientConfig;importcom.sun.jersey.api.client.config.DefaultClientConfig;/** *  * @author pavithra *  */publicclassUserInfoClient { publicstaticfinalString PATH_NAME = "/UserInfoService/name/"; publicstaticfinalString PATH_AGE = "/UserInfoService/age/"; publicstaticvoidmain(String[] args) {  String name = "Pavithra";  intage = 25;  ClientConfig config = newDefaultClientConfig();  Client client = Client.create(config);  WebResource resource = client.resource(BASE_URI);  WebResource nameResource = resource.path("rest").path(PATH_NAME + name);  System.out.println("Client Response \n"    + getClientResponse(nameResource));  System.out.println("Response \n"+ getResponse(nameResource) + "\n\n");  WebResource ageResource = resource.path("rest").path(PATH_AGE + age);  System.out.println("Client Response \n"    + getClientResponse(ageResource));  System.out.println("Response \n"+ getResponse(ageResource)); } /**  * Returns client response.  * e.g :   * returned a response status of 200 OK  *  * @param service  * @return  */ privatestaticString getClientResponse(WebResource resource) {  returnresource.accept(MediaType.TEXT_XML).get(ClientResponse.class)    .toString(); } /**  * Returns the response as XML  * e.g : <User><Name>Pavithra</Name></User>   *   * @param service  * @return  */ privatestaticString getResponse(WebResource resource) {  returnresource.accept(MediaType.TEXT_XML).get(String.class); }} | 
- После запуска клиентской программы вы получите следующий вывод.
| 1 2 3 4 5 6 7 8 9 | Client Response GET http://localhost:8080/RESTfulWS/rest/UserInfoService/name/Pavithra returned a response status of 200 OKResponse <User><Name>Pavithra</Name></User>Client Response GET http://localhost:8080/RESTfulWS/rest/UserInfoService/age/25 returned a response status of 200 OKResponse <User><Age>25</Age></User> | 
Наслаждайтесь!
  Ссылка: веб-службы RESTful с Java от нашего партнера JCG Павитры Сиривардены в блоге EVIAC . 




