Скажите у вас есть метод хранилища для обновления документа:Частичное Entity Обновления в WebAPI PUT/POST
public Document UpdateDocument(Document document)
{
Document serverDocument = _db.Documents.Find(document.Id);
serverDocument.Title = document.Title;
serverDocument.Content = document.Content;
_db.SaveChanges();
return serverDocument;
}
В этом случае предприятие имеет два свойства. При обновлении документа, оба этих свойства необходимы в запросе JSON, поэтому запрос на PUT /api/folder
с телом
{
"documentId" = "1",
"title" = "Updated Title"
}
будет возвращать ошибку, потому что «содержание» не было. Причина, по которой я это делаю, состоит в том, что даже для свойств и свойств, которые могут быть недействительными, которые пользователь не обновляет, кажется более безопасным заставить клиента указать эти поля в запросе, чтобы избежать перезаписи неопределенных полей с нулевыми серверами.
Это привело меня к практике всегда требовать каждого обновляемого свойства в запросах PUT и POST, даже если это означает указание значения null для этих свойств.
Это круто, или есть образец/практика, о которых я еще не узнал, которые могли бы облегчить частичные обновления, отправив только то, что нужно по проводу?
Пример не будет работать с Content-Type: application/json-patch {"replace": "/ count", "value": 5}, если только не был фильтр действий или формат медиафайла, чтобы преобразовать схему патча в объект – Clive
Этот ответ абсолютно непрактичен. Что делать, если вы хотите обновить несколько других полей в «Документе»? Как вы узнаете, какие из этих полей необходимо обновить? Нулевое название означает удаление или не обновляется? Без правильного формата патча невозможно понять такие вещи. AFAIK, поддержка JSON-Patch ASP.Net в мире отсутствует. Мне бы хотелось, чтобы я был ошибочен. О, и я большой поклонник твоих статей!:) – Mrchief
Вспомните, что «Дельта» OData может помочь, хотя я не уверен, что вы можете использовать ее, не вступая в брак в OData в целом. – Mrchief