Що таке RESTful API?

3 хв. читання

Коли я чую фрази типу "це не RESTful API", в мене виникають логічні питання:

  • Що таке REST?

  • Як щось зробити RESTful?

Якщо у вас виникають такі ж питання, то ви читаєте потрібну статтю.

REST - скорочення від Representational State Transfer, що можна перекласти як «передача репрезентативного стану». Це стиль проектування розподілених систем за допомогою обмежень. Центральною абстракцією в REST є ресурс. А головні обмеження виглядають так:

  • Клієнт-серверна модель

  • Взаємодія без збереження стану

  • Логічний інтерфейс

Ви все ще не здогадуєтесь, що це означає? Просто хочете зробити ваш API RESTful? Я відчував те ж саме. Щоб розібратися що це все означає, давайте пригадаємо основні концепції world wide web.

Клієнт-сервер

Що відбувається коли ви набираєте http://codeguida.com в адресному рядку вашого браузера?

Якщо коротко, то ваш браузер (клієнт) посилає GET запит до сервера (в даному випадку codeguida). Сервер приймає запит і відправляє відповідь. Браузер її приймає й відображає отриману інформацію.

В клієнт-серверній моделі сервер надає якийсь сервіс чи ресурси, котрі отримують клієнти, виконуючи запити. При чому клієнт може бути чим завгодно: Android-додатком, браузером або банкоматом.

Що таке RESTful API?

Перевага такого принципу в тому, що так підтримується розподіл інтересів. Якщо в вас є єдина машина-сервер, цього достатньо, а клієнти тим часом можуть бути геть різними.

Взаємодія без збереження стану

В архітектурі REST сервер не повинен зберігати ніякої інформації про стан операції. Сесії повинен зберігати клієнт. Це означає, що якщо сервер отримав два різних запити від одного клієнта, вони не повинні впливати один на одного. Через це, всю інформацію, потрібну для здійснення дії, клієнт повинен відправляти відразу.

Що таке RESTful API?

Такий підхід дозволяє економити купу часу та ресурсів і полегшує масштабування сервера.

Так, в вас не повинно бути функції login/logout. Натомість ви повинні мати функцію, що за авторизаційними даними повертає користувачу токен, який він повинен додавати до кожного запиту.

Що ж таке ресурс?

Ресурс - це представлення віртуального об'єкту (такого як зображення), реального об'єкту (клієнт) чи колекції об'єктів. Взагалі, ресурс може бути чим завгодно, розробник API вирішує що в нього буде ресурсом.

Давайте уявимо, що ви пишете RESTful API для мережі магазинів, що продають банджо. В такому випадку ресурсом можуть слугувати банджо, магазини, клієнти, співробітники, продажі, користувачі, відвідування і т.д.

В REST кожен ресурс повинен бути унікальним. Тому ми присвоюємо їм ID. Для нашої мережі магазинів /store/1 та /store/2 це два різних магазинів з ID 1 та 2. Також ресурси можуть бути вкладеними. Наприклад, URI працівника 2 в першому магазині буде виглядати так /store/1/employee/2.

Логічний інтерфейс

Метод GET, який ми згадували, - не єдиний метод HTTP. Ще є POST, PUT, PATCH та DELETE. Більшість запитів до нашого API будуть на виконання базових CRUD-операцій (створення-читання-оновлення-видалення). Ця таблиця ілюструє відповідність цих операцій в SQL та HTTP.

Що таке RESTful API?

  • Щоб отримати магазин 1, ви повинні виконати GET /store/1

  • Щоб створити новий магазин, ви повинні виконати POST /store

  • Щоб замінити магазин 1 на інший, ви повинні виконатиPUT /store/1

  • Щоб частково оновити інформацію про магазин: PATCH /store/1

  • Щоб видалити магазин 1: DELETE /store/1

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 5.8K
Приєднався: 8 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація