Согласно «идеологии REST», что должно быть в теле ответа для запросов PUT / POST / DELETE?
А как насчет кодов возврата? Есть
HTTP_OK
достаточно?В чем причина таких соглашений, если таковые имеются?
Я нашел хороший пост, описывающий различия POST / PUT: POST против PUT, но он все еще не отвечает на мой вопрос.
rest
http
post
http-delete
tuxSlayer
источник
источник
В целом, соглашения заключаются в том, что «думайте, будто вы просто размещаете веб-страницы».
Для PUT я бы вернул тот же вид, который вы получили бы, если бы вы сразу же получили GET; это приведет к 200 (ну, конечно, если рендеринг будет успешным). Для POST я бы сделал перенаправление на созданный ресурс (при условии, что вы выполняете операцию создания; если нет, просто верните результаты); код для успешного создания - 201, который на самом деле является единственным HTTP-кодом для перенаправления, которого нет в диапазоне 300.
Я никогда не был рад тому, что DELETE должен вернуть (мой код в настоящее время выдает HTTP 204 и пустое тело в этом случае).
источник
PUT
возвращение запроса на следующей странице , кажется , как плохая практика, так как освежающие на открывшейся странице будет вызывать запрос снова выполнить. Вместо этого, для меня имеет смысл сделать перенаправление, предполагая, что вы имеете дело с синхронными запросами.PUT
запрос, приводящий к возвращению данных. Например, если два человека ссылаются на одну и ту же страницу, один обновляет, а другой обновляет, если первый обновляется, чтобы увидеть результат, это в конечном итоге приводит к тому, что вещи возвращаются до того, как второй сделал их изменения.Создание ресурса обычно сопоставляется с POST, и это должно возвращать местоположение нового ресурса; например, в скаффолде Rails CREATE будет перенаправлять на SHOW для вновь созданного ресурса. Тот же самый подход может иметь смысл для обновления (PUT), но это менее условно; обновление должно только указывать на успех. Удаление, вероятно, должно указывать только на успех; если вы хотите перенаправить, возвращение списка ресурсов, вероятно, имеет смысл.
Успех может быть указан HTTP_OK, да.
Единственное строгое правило в том, что я сказал выше, это то, что CREATE должен возвращать местоположение нового ресурса. Это кажется легкой задачей для меня; вполне логично, что клиент должен иметь возможность доступа к новому элементу.
источник
По RFC7231 это не имеет значения и может быть пустым
Как мы реализуем стандартное решение json api в проекте:
post / put: выводит атрибуты объекта как в get (поле filter / Relations применяется так же)
delete: данные содержат только null (для представления отсутствующего объекта)
статус для стандартного удаления: 200
источник
Мне нравится, что Alfonso Tienda отвечает из кода состояния HTTP для обновления и удаления?
Вот несколько советов:
УДАЛИТЬ
СТАВИТЬ
источник