Хватит продолжать жить в иллюзиях
Тысячи курсов, статей, докладов, видео с хабра и ютуба рассказывают, как строить REST API. Они говорят про CRUD, ресурсы, JSON, методы HTTP. И все это — пиздеж
REST вообще не про это
Между настоящим REST и тем, что сегодня называют REST API — пропасть. Представь, что всю жизнь ешь редьку и думаешь, что это десерт. Вот настолько все плохо
А пришел я к этому открытию через разработку телеграм ботов. Точнее, Telegram Web Apps (это что-то вроде веб приложения, которое запускается через бота и работает прямо в интерфейсе телеги)
Такие Mini Apps или TWA зачастую не обладают большой сложностью и их удобно размещать прямо вместе с ботом на том же хостинге в той же кодовой базе. Но черт, выглядит это обычно не очень: вот у тебя бэк для фронта и бот, вот у тебя отдельно лежит и собирается фронт и все это надо как-то связывать через api
Ясен пень, ты как дебил начинаешь сидеть и проектировать это апи, связывать его с функциями бота, разрабатываешь dto'шки, фигачишь валидацию, потом поддерживаешь все это на клиенте, то есть, парсишь json'ки и превращаешь их в набор компонентов для отображения данных, которые после будут отрендерины на клиенте
Фух бля, ужас, для меня одного — это слишком жирно. Огромное кол-во пустого и бесполезного кода приходится писать просто потому, что так устроен современный веб, потому, что так работают навязанные нам корпорациями все эти ректалы и вуи
Я уверен, что должно быть решение проще, быстрее и лучше. В его поисках я когда-то закопался, но все было проще: оно всегда лежало под носом — REST
Просто тогда я еще не знал о его настоящей сути, ведь нам продали хуйню, подделку идеи. Массовое недопонимание, тиражируемое как “best practices”. А настоящая идея — гениальна в своей простоте
Кароче, REST — это архитектурный стиль, основанный на гипермедиа. Любой запрос к серверу возвращает гипертекст, в котором уже есть все, чтобы сделать следующий шаг: ссылки, формы, доступные действия
То есть, открывая страницу ты получаешь готовый HTML (тот самый SSR), в котором есть все необходимое для переходов на другие страницы или частичного обновления компонентов текущей страницы
Последнее отлично реализуется через HTMX (это такая пиздатая либа, погугли) и просто взрывает мне мозг: ты пишешь <button hx-post="/like" hx-swap="outerHTML">❤️</button>
— и все работает
Никаких fetch, JSON, стейтов, хуков и вот этого всего фронтендного цирка. Он буквально заменит твой button на то, что вернет сервер по /like
Бэк получает запрос от клиента и возвращает готовый HTML страницы или отдельной ее части
Такой подход позволяет мне быстро прототипировать, "сращивать" бэк с фронтом, держать их в одной кодовой базе и не тратить драгоценное время на бесполезную интеграцию одного с другим
Никакой хуйни вроде JSON-структур и сложного client-side рендеринга. Тебе не нужно "дизайнить API", писать документацию или учить фронт сложному рендерингу. Все уже есть в ответе
Это круто потому, что просто Все — HTML. Браузер его получил, отрендерил и готово нахуй. Никакого парсинга json'ов и shadow dom'ов
Круто потому, что гибко. Меняешь поведение на сервере — клиенту ничего обновлять не надо
И это работает. Чертовски хорошо работает
Да, мы не используем REST. Мы называем его REST, но это просто API over HTTP
Хочешь REST? Забудь про JSON. Забудь про сложный рендеринг на клиенте. Отдавай гипертекст. Не усложняй
Удачи