Технология REST

Слайд 2

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com +7 (8422) 44-66-91 +7

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com

+7 (8422) 44-66-91 +7 (495)

133-90-01 www.simbirsoft.com

О чем пойдет речь
Web services
REST & RESTful
REST vs SOAP

Слайд 3

Web service (Веб-сервис, веб-служба) - сервис (набор методов), предоставляемый приложением и

Web service (Веб-сервис, веб-служба) - сервис (набор методов), предоставляемый приложением и

доступный для использования по сети.
Стандартизированный способ для взаимодействия разнородных приложений
Без ограничений на ОС, язык программирования или устройство
Предоставление услуг для любого приложения
Слайд 4

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com +7 (8422) 44-66-91 +7

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com

+7 (8422) 44-66-91 +7 (495)

133-90-01 www.simbirsoft.com

Что же такое REST?

Технологию REST впервые представил один из авторов HTTP-протокола Рой Филдинг (Roy Fielding) в своей диссертации в Калифорнийском университете в Ирвайне (2000 год).
REST (Representational state transfer) – это стиль архитектуры программного обеспечения для распределенных систем.
REST - НЕ протокол
REST является простым интерфейсом управления информацией
Системы, поддерживающие REST, называются RESTful-системами

Слайд 5

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com +7 (8422) 44-66-91 +7

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com

+7 (8422) 44-66-91 +7 (495)

133-90-01 www.simbirsoft.com

Принципы проектирования RESTful Web-сервисов

Явное использование HTTP-методов.
Взаимодействие между сервером и клиентом не хранит состояние (stateless).
Предоставление URI, аналогичных структуре каталогов.
Передача данных в XML, JavaScript Object Notation (JSON).
Более подробно про REST
http://www.restapitutorial.ru/lessons/whatisrest.html#code-on-demand

Слайд 6

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com +7 (8422) 44-66-91 +7

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com

+7 (8422) 44-66-91 +7 (495)

133-90-01 www.simbirsoft.com

REST : HTTP Methods

Слайд 7

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com +7 (8422) 44-66-91 +7

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com

+7 (8422) 44-66-91 +7 (495)

133-90-01 www.simbirsoft.com

REST : URI Design

Слайд 8

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com +7 (8422) 44-66-91 +7

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com

+7 (8422) 44-66-91 +7 (495)

133-90-01 www.simbirsoft.com

REST vs SOAP

SOAP веб-сервисы
XML, WSDL
Работа с методами
Поддержка транзакций, уровней безопасности и пр.
Большое кол-во спецификаций
Различные транспортные уровни
Сложнее в разработке
Java™ API for XML Web Services (JAX-WS)

RESTful веб-сервисы
Ресурс ориентированная технология
HTTP запросы
Для несложной бизнес-модели
Работа с ресурсами, а не методами
Легче разрабатывать
Сложнее в разработке
JAX-RS: Java™ API for RESTful Web Services

Слайд 9

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com +7 (8422) 44-66-91 +7

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com

+7 (8422) 44-66-91 +7 (495)

133-90-01 www.simbirsoft.com

REST в Spring

@RestController
@RequestMapping
@ResponseBody
@RequestParam
@PathVariable

@RestController
@RequestMapping(value = "/student")
public class StudentController {
@RequestMapping(method = RequestMethod.POST)
public String saveStudent(@RequestParam String name, @RequestParam Integer age) {
// сохранить пользователя в бд
return "Student created";
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ResponseBody
public Person getStudent(@PathVariable Long id) {
// найти студента по id в бд
// создать объект Person и вернуть
return person;
}
}

Слайд 10

Rest-документация (Swagger)

Rest-документация (Swagger)

Слайд 11

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com +7 (8422) 44-66-91 +7

+7 (8422) 44-66-91 +7 (495) 133-90-01 www.simbirsoft.com

+7 (8422) 44-66-91 +7 (495)

133-90-01 www.simbirsoft.com

Подключение Swagger в SpringBoot


io.springfox
springfox-swagger2
2.4.0


io.springfox
springfox-swagger-ui
2.4.0

Создать бин конфигурации для сваггера (рядом с бином запуска @SpringBootApplication)
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}