[О блоге]
[наверх]
[пред]
[2023-06-26 10:51:53+03:00]
[da8063a782c2f21a3ddc49f7124a334f945e563d]
Можно ли делать REST API?
https://habr.com/ru/articles/743818/
Когда-то я старался делать web-backend с REST API. Ну чтобы все эти
красивые ресурсы в URL использовались, чтобы всё было лаконично и
понятно, под одну гребёнку. А также видел как этот REST пишут и другие.
И что почти каждый человек занимающийся подобными backend хочет REST.
Но по опыту, рано или поздно всегда всё равно придут случаи не очевидного
выбора (примеры из статьи):
/coffee-machines/{id}/recipes/lungo/prepare ?
/recipes/lungo/coffee-machines/{id}/prepare ?
/coffee-machines/{id}/prepare?recipe=lungo ?
/recipes/lungo/prepare?coffee_machine_id=<id> ?
/prepare?coffee_machine_id=<id>&recipe=lungo ?
/?action=prepare&coffee_machine_id=<id>&recipe=lungo ?
GET /v1/state?user_id=<user_id>
vs
GET /v1/profiles?user_id=<user_id>
GET /v1/orders?user_id=<user_id>
А если ещё хочется что чтобы и броузер мог ходить по подобным ресурсам,
то придётся ограничивать себя ещё и в выборе HTTP методов.
В итоге, уже более пяти лет я не сторонник REST, ибо по сути никогда не
видел успешных продуманных и лаконичных реализаций на нём. Если речь не
про совсем уж тривиальные задачи. И чтобы не париться, я по умолчанию
стараюсь использовать JSON-RPC (возможно поверх HTTP), где не паришься
ни о каких URL/ресурсах и просто делаешь вызовы методов, как если бы это
была обычная библиотека (собственно, делаешь RPC). И опытный коллега на
работе тоже пришёл к такому же подходу.
[оставить комментарий]