Стендап Сьогодні

📢 Канал в Telegram @stendap_sogodni

13.09.2022

🎂👮🍱 Сьогодні день програміста. Вітаю з 0х100!

Поскаржуся трохи на REST, як систему організації HTTP API.

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

Тепер про погане: як і будь-яка система, модель REST не описує всі операції. Наприклад:

Оскільки у Ruby on Rails дуже зручно створювати API для ресурсів, то є тенденція натягувати на REST абсолютно все, до фанатизму. Так виходять ресурси на кшталт bulk_imports або, ще гірше, publishs - тобто з дієслова штучно робиться іменник. А ще HTTP-методи окрім GET та POST не повністю підтримуються браузерами — спробуйте зробити DELETE через форму.

Я розумію, що інженери люблять розкладати речі за акуратними коробочками, і якщо щось не влазить, то це рушить всю систему. Але на мою думку, щоб ефективно користуватись будь-якою моделлю, треба розуміти її обмеження, і не боятись виходити за них, якщо цього вимагає здоровий глузд.

REST - для явних ресурсів. Для всього іншого - POST по шляху з назвою дії.