Я использую расширение KevinDockx JsonPatch для Visual Studio. В моем проекте используются .NET Web API (не Core) и Angular (6). .Net Web API не поддерживает пространство имен JsonPatchDocument, поэтому необходимо расширение KevinDock JsonPatch.
Я читаю его документацию здесь: https://github.com/KevinDockx/JsonPatch/blob/master/README.md
JsonPatch состоит из двух частей:
На клиенте (потребителе API): класс JsonPatchDocument / JsonPatchDocument для создания, по сути, набора изменений, который будет применяться к вашему объекту на стороне вашего API.
На уровне (веб) API: метод ApplyTo для применения этих изменений к вашим объектам.
Но у меня проблемы с пониманием части 1, где он создает класс JsonPatchDocument на клиенте. В моем случае я предполагаю, что это означает, что мне нужно собрать этот JsonPatchDocument где-нибудь в Angular. Код для этого шага:
JsonPatchDocument<DTO.Expense> patchDoc = new JsonPatchDocument<DTO.Expense>();
patchDoc.Replace(e => e.Description, expense.Description);
// serialize
var serializedItemToUpdate = JsonConvert.SerializeObject(patchDoc);
// create the patch request
var method = new HttpMethod("PATCH");
var request = new HttpRequestMessage(method, "api/expenses/" + id)
{
Content = new StringContent(serializedItemToUpdate,
System.Text.Encoding.Unicode, "application/json")
};
// send it, using an HttpClient instance
client.SendAsync(request);
Однако я не уверен, как реализовать эту часть кода в моем коде Angular, и правильно ли я интерпретирую эту часть инструкций. Например, предположим, что я уже установил JsonPatch в свой API через консоль диспетчера пакетов NuGet - как тогда я могу ссылаться на JsonPatchDocument из Angular (JsonPatchDocument<DTO.Expense> patchDoc = new JsonPatchDocument<DTO.Expense>();), поскольку Angular не имеет этой установки? Кто-нибудь работал с JsonPatch в проекте Angular в достаточной степени, чтобы интерпретировать эту часть документации для меня?
Привет, @Dash, к сожалению, JsonPatch оказался слишком сложным, и для наших нужд не хватило документации. В итоге мы использовали стандартные запросы PUT и POST и полностью отказались от запросов PATCH.
Спасибо за обновления. В настоящее время я реализую аналогично вашим потребностям и закончил делать то, что упоминается в следующей ссылке. c-sharpcorner.com/UploadFile/97fc7a/…





Привет, приятель, ты когда-нибудь находил решение для этого или просто использовал подход [FormBody]?