Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!13.09.2022
Чому мені не подобається модель REST
🎂👮🍱 Сьогодні день програміста. Вітаю з 0х100!
Поскаржуся трохи на REST, як систему організації HTTP API.
Спочатку про хороше: більшість того, що ми робимо через API - це саме створення, перегляд, редагування та видалення ресурсів. Ці дії чудово вписуються в ментальну модель REST, і дуже добре, що є конвенція, яку всі знають і не треба кожного разу щось складати своє.
Тепер про погане: як і будь-яка система, модель REST не описує всі операції. Наприклад:
- операції над групами (
bulk_import
якихось товарів) - усілякі додаткові операції над ресурсами, особливо незворотні (
publish
якогось поста) - процедури, які не створюють ресурсів (який-небудь
track
для аналітики)
Оскільки у Ruby on Rails дуже зручно створювати API для ресурсів, то є тенденція натягувати на REST абсолютно все, до фанатизму. Так виходять ресурси на кшталт bulk_imports
або, ще гірше, publishs
- тобто з дієслова штучно робиться іменник. А ще HTTP-методи окрім GET та POST не повністю підтримуються браузерами — спробуйте зробити DELETE через форму.
Я розумію, що інженери люблять розкладати речі за акуратними коробочками, і якщо щось не влазить, то це рушить всю систему. Але на мою думку, щоб ефективно користуватись будь-якою моделлю, треба розуміти її обмеження, і не боятись виходити за них, якщо цього вимагає здоровий глузд.
REST - для явних ресурсів. Для всього іншого - POST по шляху з назвою дії.