Частичные обновления сущностей в 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 для этих свойств.
Это круто, или есть шаблон / практика, о которой я еще не узнал, которая может способствовать частичным обновлениям, посылая только то, что нужно по сети?