Код ответа для HTTP PUT с пустыми данными - PullRequest
0 голосов
/ 22 ноября 2018

Какой наиболее распространенный / стандартный отраслевой код ответа для HTTP PUT, когда:

  • Клиент сделал правильно сформированный запрос и
  • Содержимоефайл / сообщение / данные пустые и
  • Из-за этого ничего не изменилось на сервере / в базе данных

В моем конкретном случае клиентотправляет HTTP PUT с пустым JSON следующим образом:

{}

, в то время как я ожидаю что-то более похожее на это:

{
    key1: {
        something: value,
        something2:value2
    },
    key2: {
        something: value3,
        something: value4
    }
}

, что в моем случае будет преобразовано в 4 новые строки, добавленные вбаза данных.

Я рассматриваю либо 400 (потому что, возможно, это неправильный запрос, когда вы вызываете HTTP PUT, но у вас нет ничего, чтобы поместить туда), 200, 204 и 304.

Мой вопрос отличается от this и this , поскольку они касаются метода HTTP GET и отличаются от this потому что пока речь идет об HTTP PUT, ответ не касается моего случая.

1 Ответ

0 голосов
/ 22 ноября 2018

A PUT запрос должен заменить то, что было на сервере по указанному uri.

Так что, если ресурс в uri уже был пуст, и новый ресурс, который был помещентакже пусто, ничего не изменилось, но все равно успешно, поэтому 200 OK нормально.

Если ресурс не существует и вы создаете новый 0-байтовый ресурс, 201 Created может быть более подходящим.

Если ресурс существовал, но он не был пустым, и вы отправили пустой запрос PUT, он должен заменить существующий ресурс пустым.

Вот где вы идете не так, потому что PUT не должен использоваться для "upsert" для каждой записи, как вы делаете.

Если заявленный вами запрос PUT был семантически правильным, он должен уничтожить всесуществующие записи привязаны к этому местоположению.

Что вы, вероятно, хотите, это PATCH или POST.

...