Що таке RESTful API
Що таке REST API?
«ЦеAPI, який використовує HTTP-запити для
GET, PUT, POST таDELETE ".
Багато хто також скаже:
«Йдеться про визначення ресурсів за допомогою URI»
Інші кричатимуть:
"Ви забули посилання, вони повинні використовувати гіперпосилання!"
На закінчення можна сказати:
"В принципі, це простоAPI, який використовуєHTTP правильно!"
Деякі з цих тверджень помилкові,
Деякі частково вірні,
але це не має значення,
Тому що вони всі упускають суть.
Щоб мати можливість розробляти API RESTful,
По-перше, ми повинні розуміти REST!
Що таке REST?
Що таке REST?
Виразно не HTTP
Ось чому навколо REST APIs так багато суперечок.
REST – це стиль архітектури.
О, гаразд… але що таке стиль архітектури?
Стиль архітектури

Це просто архітектура плюс набір обмежень, що застосовуються до архітектури, що створює бажану архітектуру.
Застосовуючи ці обмеження ми отримуємо бажану архітектуру, оптимізовану для загальних випадків використання.
REST виступає за подання стану передачі
Це було записано Роєм Філдінгом у його докторській дисертації у 2000 році, де він описав існуючу та сучасну веб-архітектуру як абстракцію.
Назва була покликана викликати уявлення про те, як поводиться добре розроблений веб-додаток.
Рой описав REST на простому прикладі:
Розглянемо мережу веб-сторінок як віртуальну машину станів.
Кожна сторінка представляє стан:

1. По-перше, користувач отримує перший стан у виглядііндексного стану
3. Результат передачі наступного стану користувачеві.
REST досі не HTTP
Звичайно, ще 2000 року мережа вже працювала на HTTP, і Рой зі своїми колегами-інженерами багато працювали над цим.
Однак REST не визначає конкретні деталі реалізації системи і не визначає синтаксис протоколу.
Цілком можливо мати архітектуру RESTful поверх протоколів, відмінних від HTTP.
Наприклад, CoAP (протокол обмеженого застосування) є протоколом RESTful для вбудованих пристроїв (Internet of Things) і призначений для використання мінімальних ресурсів як у пристрої, так і в мережі.
То навіщо використовувати REST?
Всесвітнє павутиння засноване на архітектурі REST.
Тому, якщо ви створюєте API-інтерфейс non-RESTful, який використовуватиметься в Інтернеті, то ви отримаєте неоптимальну систему. Не оптимальний щодо оптимізованої архітектури.
Це важливо відзначити, оскільки не-RESTful API може бути неоптимальним у мережевій архітектурі, але оптимальним для інших проблем. Наприклад, сучасні інтерфейсні програми можуть мати дуже специфічні потреби, отже, зростає кількість бібліотек збору даних, таких як GraphQL або Falcor.
Отже, коли це API RESTful?
API є RESTful, коли вона постійно діє під обмеженнями REST.
REST визначає 6 обмежень для досягнення бажаної оптимізації системи:
Це обмеження ґрунтується на принципі поділу інтересів.
Це дозволяє компонентам розвиватись незалежно. Створюючи наш API, він діє як сервер, який обслуговує велику кількість клієнтів.
Зв'язок між клієнтом та сервером має бути без громадянства. Це означає, що кожен запит від клієнта до сервераповинен містити всю необхідну інформацію для завершення транзакції.
Основною перевагою цього обмеження є те, що система здатна масштабуватись краще, тому що серверу не потрібно зберігати стан клієнта між запитами. Відсутність необхідності запам'ятовувати інформацію про стан клієнта звільняє ресурси сервера, тому може обслуговувати більше клієнтів одночасно.
Найбільш ефективним мережним запитом є той, який не використовує мережу.
Коли ми створюємо наш API, він не повинен ігнорувати кешування.
Щоб мати ефективне кешування мережі, компоненти повинні мати можливість взаємодіяти через єдиний інтерфейс. З єдиним інтерфейсом корисне навантаження може передаватися у стандартній формі.
Це означає, що будь-яка інформація, яка може бути названа, може бути ресурсом (зображення, документ або навіть набір інших ресурсів)
Ресурс може бути представлений у різний спосіб.
Наприклад, HTML, XML, JSON або навіть JPEG-файл.
Це означає, що клієнти взаємодіють із ресурсами через свої уявлення, що є сильним засобом утримання абстрактних понять ресурсів від своїх взаємодій.
Це означає, що ресурс може бути описаний у повідомленні запиту, а сервер може відповідати описовим повідомленням про стан. Так, HTTP-заголовки та коди відповідей є гарними реалізаціями для цього правила.
Як ви можете бачити, багато цих правил можуть бути реалізовані в протоколі HTTP. Тому, коли API використовує HTTP правильно, це величезний крок до того, щоб стати RESTful.
У багаторівневій системі посередники, такі як проксі-сервери, можуть розміщуватись між клієнтом і сервером, використовуючи одноманітний інтерфейс мережі.
Одним зПеревагою багаторівневої системи є те, що посередники можуть перехоплювати трафік клієнт-сервер для певних цілей/ Наприклад, для кешування.
Отже, як створити REST API?
Правильно використовувати HTTP
Якщо ви будуєте API RESTful, використовуйте протокол RESTful. Для Інтернету HTTP-протокол є певним вибором. Створіть API для правильного використання HTTP.
Створіть єдиний інтерфейс
Порівняйте свої концепції з ресурсами та призначте відповідні ідентифікатори для кожного з них. Найпростішим прикладом може бути служба бази даних користувачів. У такій службі ми можемо назвати два ресурси; Користувачів та користувачів (ресурс збору). Ці ресурси можуть бути ідентифіковані з URI / users та / user / URI вашого інтерфейсу API.
Використовуйте посилання для підключення ресурсів. Це зробить ваш API доступним для клієнтів, які мають дуже мало початкових знань про ваші ресурси.
Пам'ятайте про архітектуру REST
Для мене головне звільнення від створення RESTful API полягає в тому, наскільки важливо розуміти Інтернет та його базову архітектуру. Ми можемо або скористатися цією оптимізацією, або ми можемо її ігнорувати.
Якщо у вас виникли запитання, запрошуємо на наші курси Java EE.
Будь ласка, поділіться корисною інформацією із друзями!