Pull to refresh

Comments 10

Люблю такие статьи: лаконично и по делу! :) Спасибо!

Если у вас новый проект, то берём @hapi/hapi + Joi + hapi-swagger. Никаких дополнительных скриптов, всё формируется автоматически.
Интересно, кто вообще додумался использовать для одинаковых URL наборы GET/POST/PUT/DELETE? Что мешает использовать исключительно POST, а тип команды указывать в URL?
Например:
/orders/create
/orders/update
/orders/delete
Что мешает использовать исключительно POST, а тип команды указывать в URL?

Здравый смысл

Кармы нет, чтобы плюсануть :)

С точки зрения API нет принципиальной разницы между POST /users.delete?user_id=1 и DELETE /users/1. Особенно если HTTP спрятан внутри языкового SDK, где POST /users превращается просто в users.create.

Не всё так просто.
Использование одного и тоже URL для разных команд часто приводит к тому, что разработчики фронтэнда путаются. Сложно перепутать назначение команд /users/delete и /users/update, а вот /users и /users — легко, как показывает практика проектов, в которых я работал.

Есть в этом зерно правды. Люди путаются между POST, PATCH и PUT для частичных обновлений, где последний запрещено использовать для этого, а первый предназначен для чего угодно. Аналогично с созданием — POST или PUT? Семантически можно использовать оба, но "есть нюанс". И не один. Поэтому неудивительно, что многие вендоры (vk, telegram, slack, flickr etc) используют RPC-like стиль, явно именуя адреса API.

Кто путается? «отбитые»? Это же азы… Понятное дело, что можно вообще почти все через GET/POST/PUT и тп, вопрос реализации, но блин серьезно?
Sign up to leave a comment.

Articles