Що таке REST
REST (Representational State Transfer) – архітектура
передання представлень про стан.
REST орієнтований на надання ресурсів і даних.
REST передбачає передання даних з одного місця до
іншого.
У RESTful-сервісах стан ресурсів має більше значення,
ніж операції, які можна виконати з цими ресурсами.
Формати представлення ресурсів:
XML.
JSON.
HTML.
Та інші
HTTP-методи
GET – метод, який витягує ресурс із сервера. Ресурс ідентифікується адресою URL у запиті.
POST – метод, який надсилає дані на сервер для обробки процесором, що очікує надходження запитів на адресу URL у запиті.
PUT – метод, який поміщає дані в ресурс на сервері, що ідентифікується адресою URL у запиті.
DELETE – метод, який видаляє ресурс, що ідентифікується адресою URL у запиті.
URL
URL (Uniform Resource Locator) визначає місце розташування ресурсу.
URL має чітко та зрозуміло ідентифікувати який ресурс хочуть отримати.
URL має не тільки посилатися, а й ідентифікувати ресурс.
Адреси в REST параметризовані. Не REST URL несуть дані в параметрах запиту.
Приклад:
Не REST url :
http://localhost:8080/employee/htm?id=77
REST url :
http://localhost:8080/employee/77
RESTful webservices в Spring
RESTful-сервіси в Spring ґрунтуються на Spring MVC.
Налаштування здійснюється за допомогою анотацій:
@RestController.
@ResponseBody.
@RequestBody.
@ResponseStatus.
@PathVariable.
ContentNegotiatingViewResolver визначає, у якому представленні необхідно повернути ресурс.
Http Message Converters конвертують відповідь у потрібний формат.
Jackson – найпопулярніший конвертер.
Представляє механізм для XML і JSON.
Вказати необхідний формат отримання даних можна за допомогою суфікса до запиту (наприклад, http://localhost:8080/employee/list.json) або додавши заголовок Accept до запиту (напр. Accept: “application/json”).
Суфікс формату має більший пріоритет, ніж заголовок.
Залежності
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${ jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>${ jackson.version}</version>
</dependency>
Анотації
@ResponseBody – анотація, яка вказує, що значення методу, яке повертається, має бути пов'язане з тілом відповіді.
@RequestBody – анотація, яка вказує, що параметр методу має бути пов'язаний із тілом запиту. Тіло запиту пропускається
через HttpMessageConverter для визначення аргументу методу залежно від типу вмісту запиту.
@RestController – композиція анотацій @Controller і @ResponseBody. Використовуючи цю анотацію, @ResponseBody додається автоматично перед кожним методом класу, анотованого анотацією @RestController.
@ResponseStatus – анотація, яка позначає метод або клас винятку кодом статусу, який має бути повернений.
Q&A
Дякую всім за заняття!🙌🏻
❗️🎓7. RESTful webservices
Нагадую, що дедлайн здачі домашніх робіт – до наступного уроку.
Якщо виникають складнощі, пишіть, допоможу із задоволенням 😌
Запис лекції тренер опублікує трохи пізніше 🖥
Не забудьте повторити матеріал та підготуватися до наступного уроку📚
Успіху і до зустрічі!🤩
PRO. 1
Прізвище
Ім'я
По батькові
Стать
Посада
Дата народження
Вивести дані про інженерів, пенсійного віку (чоловікам більше 65-ти років, жінкам 60).
PRO. 2
No поїзда
Пункт і час прибуття
Пункт і час відбуття
Вивести всі відомості про поїзди, час перебування в дорозі яких перевищує 7 годин 20 хвилин.
Обчислити середню вартість усіх комп'ютерів і надрукувати найменування комп'ютерів та їхню середню вартість.
PRO. 3
Прізвище
Ім'я
По батькові
Посада
Зарплата
Дата народження
Вивести відомості про працівників, у яких зарплата вища за середню і вік менше 30-ти років.