Формування URL для REST API

При написанні API потрібно давати правильні назви ресурсам. Адже інтуїтивні та прості найменування спрощують використання сервісу.

Кінцеві URL за запитом ресурсу також називають endpoints API.

Хороший підхід вибору найменування:

  • Для опису базових URL використовують іменники у множині - users, contacts.

  • Використовують конкретні та чіткі імена - на кшталт news, videos, а не абстрактні items або elements.

  • Складну логіку URL описують додаванням властивостей. Параметри ховають за знаком питання ?. Наприклад як при організації пагінації: /news?limit=25&offset=50

Розглянемо приклади хороших практик найменування:

Створити дані про клієнта:

HTTP метод: POST
URL: http://www.example.com/customers

Отримати дані клієнта з ідентифікатором клієнта ID 112233:

HTTP метод: GET
URL: http://www.example.com/customers/112233

Такий само URL використовують для HTTP методів PUT та DELETE для оновлення та видалення відповідно.

Створення нового продукту:

HTTP метод: POST
URL: http://www.example.com/products

Для читання, оновлення, видалення продукту з ID 432111, відповідно:

Створення нового замовлення для клієнта поза контекстом клієнта

Створення того ж замовлення, але в контексті конкретного клієнта з ID 332244

Список замовлень, що належать клієнту ID 332244:

Нехай необхідний URL для додавання нової позиції на замовлення з ID 1234, для клієнта з ID 332244:

Отримання списку замовлення за ID замовлення без знання ID конкретного клієнта

Пагінацію проводять через query-рядок за допомогою параметра offset - це початковий номер позиції, та параметр limit - максимальна кількість елементів, що повертаються. Вони можуть мати й інші назви, наприклад skip, limit

Складна фільтрація за значеннями. Можна використовувати роздільник подвійна двокрапка ::, яке відокремлює ім'я властивості від значення порівняння

Сортування - Один зі способів, коли для кожної переданої властивості проводиться сортування в порядку зростання, а для кожної властивості, з префіксним тире ("-") сортування проводиться за зменшенням. Сепаратор для кожного імені властивості вертикальна риска ("|")

Last updated