Когда мы должны использовать Query, а когда Body в HTTP?
==========================================================

 Всем привет. Подскажите, пожалуйста, есть ли какие-то ограничения в спецификации HTTP / REST, которые устанавливают ограничение на использование Query или Body?  

  

Например, браузер не позволяет отправить GET запрос с Body параметрами, а что насчёт остальных методов? Могу ли я, например, юзать POST/PUT/PATCH/DELETE с Query запросом (если там нет секретных данных, типо паролей)? И что лучше выбрать во время разработки архитектуры API? Есть ли какая-то документация, которая явно говорит, что нужно юзать Body с такими-то методами, Query - с такими-то?  

  

UPD. Вспомнил ещё три вопроса:  

1) можем ли мы использовать глаголы в роутингах? Типа /users/password/reset?  

2) этот вопрос связан с разницой PUT и PATCH. Например, я хочу заапдейтить пароль у юзера.  

Есть ли разница между этими двумя роутингами: PATCH /user или лучше PUT /user/password ?  

3) должны ли мы всегда использовать множественное число в названии коллекций?  

Например есть метод GET /user-management/users, который вернёт список ВСЕХ юзеров. А есть метод DELETE /user-management/user?id=123, который удалит только ОДНОГО юзера. Вопрос такой: надо ли изменить API удаления на /user-management/user**S** или можно оставить как есть? 

 Сама концепция REST настолько размыта, что стандартного ответа на ваш вопрос нету. То что вы используйте и видите это чаще всего не REST в том академическом плане в каком он был создал.  

  

Вот хорошее мнение на этот счет. Но я ни где не находил его подтверждения.  

<https://habr.com/ru/company/yandex/blog/265569/>