Получи случайную криптовалюту за регистрацию!

​​ Довелось давеча заняться фундаментальным рефакторингом все | Типа про IT

​​ Довелось давеча заняться фундаментальным рефакторингом всей кодовой базы моего пет-проджекта, потому что сделать всё хорошо изначально — это не наш метод.

Фронтенд я в итоге переписал полностью, обычное дело, а на бэкенде встал вопрос хоть какой-нибудь стандартизации, чтобы двигаться с новыми фичами дальше и не потерять контроль над ситуацией. Рефакторить так рефакторить, правильно?

И как раз в это время ко мне постучался коллега, который подкинул ссылочку на их новый REST API Standard, который вобрал в себя лучшее и при этом не раздулся до размеров JSON:API, который я, прямо скажем, недолюбливаю.

Это было вовремя. Я не поленился, прочитал всю спеку, проникся, и в итоге забрал себе часть контракта по работе с коллекциями, в частности cursor-based pagination. Потом перечитал URL Structure и задумался. А нахуя мы вообще соблюдаем REST? Зачем тянуть в новые стандарты старое соглашение, снова и снова?

GET пусть остаётся для /health и для статики, абсолютно всё решается POST-запросами, в тело которых можно аккуратно уложить любую параметризацию, а не вот это вот. Действие (action, verb) спокойно выносится в URL, пусть он сам за себя говорит. В моём случае достаточно соблюдать наименование вида /[версия]/[сущность]/[действие]/[признак], например:

/v1/damage/get/shallow — получить все т.н. “верхние маркеры”, опционально принимает набор фильтров и объект пагинации

/v1/damage/create — очевидно

/v1/airalarm/get/all — все объекты другой сущности

/v1/auth — просто действие

И так далее. POST only. Works like a charm. А вы что думаете об этом? In REST we trust или rest in peace?