Ваша проблема может быть связана с тем, что вы пытаетесь соотнести семантику CRUD (создание, получение, обновление и удаление) с глаголами REST спецификации HTTP (GET, PUT, POST, DELETE, HEAD) со следующим неполным отображением:
- Создать = PUT
- Получить = ПОЛУЧИТЬ
- Обновление = POST
- Удалить = УДАЛИТЬ
Тем не менее, «PUT» указывает, что что-то должно быть «помещено» на сервер, и когда есть пустое тело, оно недопустимо и всегда должно получить ответ 400.
Create = PUT (если и только если вы отправляете ресурс
необходимо для создания контента).
Create = POST (если вы отправляете команду на сервер
создать контент, используя ресурсы на стороне сервера)
Получить = ПОЛУЧИТЬ.
Update = PUT (если и только если вы отправляете ресурс
необходимо обновить контент)
Update = POST (если вы отправляете команду на сервер
обновить содержимое, используя ресурсы на стороне сервера)
Удалить = УДАЛИТЬ.
Читать дальше Пост против PUT