#c# #json #rest #entity-framework-6 #patch
#c# #json #rest #entity-framework-6 #исправление
Вопрос:
Я работал над проектом веб-API (Restful), где размер моделей (и соответствующей таблицы) довольно огромен, поэтому существует абсолютная потребность в частичных обновлениях.
Я рассмотрел вариант публикации в подраздел модели, но, учитывая, что модель имеет огромное количество полей (и настраиваемых полей), не думаю, что возможно предоставить такое количество URI).
Я понимаю, что с помощью PATCH verb я могу разрешить клиенту выполнять частичные обновления, но я изо всех сил пытаюсь понять, как я должен фиксировать то же самое на стороне сервера, а затем выяснить, что изменилось (преобразование post JSON в model), чтобы я мог различать, какие поля заданы явнокак NULL клиентом (поскольку она хотела обновить поле) Против. что равно NULL в результате отсутствия обновления.
Должен ли я использовать пользовательский mapper? или я должен создавать общие свойства и фиксировать состояние на уровне поля?
Я искал (и все еще делаю) в сети и здесь SOF.com , но я не нашел ничего авторитетного / конкретного, поэтому обращаюсь к профессионалам за обратной связью.
ценю вашу помощь!
Ответ №1:
KevinDockx создал плагин для MVC, который обрабатывает ИСПРАВЛЕНИЯ. Вот ссылка на nuget https://www.nuget.org/packages/Marvin .JsonPatch /
Этот плагин является реализацией RFC 6902 для .NET..
по сути, когда вы отправляете исправление json со своего клиента, вам необходимо создать массив операций
[
{ "op": "add", "path": "/foo", "value": "bar"},
{ "op": "replace", "path": "/baz", "value": "boo" }
]
Конечно, это имеет значение только в том случае, если вы хотите следовать спецификации. В другом случае (я имею в виду ваше собственное понимание того, как работает ИСПРАВЛЕНИЕ) вы должны реализовать свою пользовательскую логику.
Редактировать
Лично я обнаружил, что только операция «заменить» была полезна в моих вариантах использования из-за плоской природы моих DTO.