Спецификация: OData версия 4.0.Часть 1. Протокол плюс ошибки 03
8.2.8.7 Возврат предпочтения = представление и возврат = минимальный
В OData return = представление или возврат = минимальный определяется для использования с данными POST, PUT или PATCHЗапрос на изменение, отличный от свойства потока или запроса на действие.
Если заголовок Preference
отсутствует, по умолчанию в реализации .Net предполагается return=minimal
, что приводит к 204 No Content
response.
Вы должны убедиться, что клиентский запрос имеет заголовок Preference
или Prefer
в сценариях, где вы ожидаете данные ответа, или вы можете изменить свой обработчик патчей для использования альтернативного значения по умолчанию:
[HttpPatch]
[EnableQuery]
public IHttpActionResult Patch(int key, Delta<EmployeeDetail> patch)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var entity = _db.EmployeeDetails.Find(key);
patch.Patch(entity);
_db.SaveChanges();
// Return content by default
// Disable this by sending in header { Prefer: "return=minimal" }
if (!this.Request.Headers.Any(k => k.Key.Equals("prefer", StringComparison.OrdinalIgnoreCase) || k.Key.Equals("preference", StringComparison.OrdinalIgnoreCase)))
this.Request.Headers.Add("Prefer", "return=representation");
return Updated(entity);
}
ПРИМЕЧАНИЕ: заголовок Prefer
не был жестко закодирован для всех запросов в этом решении, только те запросы, которые не указывают заголовок, таким образом, пользовательские запросы все еще могут манипулироватьответ, если вам нужно.
Значения Prefer
отличаются в более ранних версиях OData v3 и в более ранней версии.В рамках реализации .Net версии 4 в ODataLIb вы найдете несколько документов, в которых говорится, что для заголовка Prefer требуется значение «content» или «return = content» ... эти решения больше не работают.