2016-11-28 10 views
0

Я отправляю запрос PUT (используя PostMan) в службу TripPin от OData Basic Tutorial.Запрос OData PUT на получение ответа «Требуемое условие 428»

PUT http://services.odata.org/v4/TripPinServiceRW/People('russellwhyte') 

Корпус:

{ 
"@odata.id": "serviceRoot/Airlines('FM')" 
} 

Ответ Я получаю 428 (Precondition Required). Существует уже вопрос OData : Why am I getting HTTP 428 (Precondition Required) error while performing an update, и ответ там говорится, что:

ваша служба использует оптимистическую блокировку и ожидает заголовка If-Match, содержащая ETag в сущности, в запросе

Но ответ не дает понять, как поставить правильный заголовок If-Match, и я не смог найти никаких примеров.

Так как я могу исправить эту ошибку (добавив заголовок If-Match с ETag или иначе)?

ответ

0

Я нашел обходной путь в http://www.odata.org/documentation/odata-version-2-0/operations/

При выдаче PUT, DELETE или MERGE запрос, клиенты должны указать ETag в заголовке запроса If-Match HTTP. Если для данного клиента допустимо перезаписать любую версию Entry на сервере, , тогда вместо этого может использоваться значение «*». Если у данной записи есть ETag , и клиент пытается изменить или удалить запись без . Серверы заголовка If-Match должны сбой запроса с кодом ответа 412 .

Ввод «*» для If-Match работ и сервер теперь возвращает 204 No Content и мои изменения успешно сделаны.

enter image description here

В противном случае мы должны положить содержимое odata.etag поля из запроса GET. Например, для "@odata.etag": "W/\"08D417AED09F4758\"" мы помещаем W/"08D417AE4EA83DB1" в заголовок If-Match.