Я создаю метод HTTP Partial в своем контроллере веб-API ASP.NET, и я прочитал этот документ http://benfoster.io/blog/aspnet-core-json-patch-partial-api-updates о том, как реализовать методы HTTP Partial в контроллере. Я получаю исключение, когда попадаю в частичную конечную точку HTTP с надписью
Вот мой код для метода Patch в контроллере:
[HttpPatch("{userId}")]
public IActionResult Patch([FromRoute(Name = "userId")]Guid userId, [FromBody] JsonPatchDocument<User> userProperties)
{
var indexOfUserToPartiallyUpdate = UsersInMemory.List.FindIndex(user => user.Id == userId);
if (indexOfUserToPartiallyUpdate == -1)
{
return BadRequest($"user with {userId} not found.");
}
var originalUser = UsersInMemory.List[indexOfUserToPartiallyUpdate];
userProperties.ApplyTo(UsersInMemory.List[indexOfUserToPartiallyUpdate], ModelState);
if (!ModelState.IsValid)
{
return new BadRequestObjectResult(ModelState);
}
var model = new
{
beforePatch = originalUser,
afterPatch = UsersInMemory.List[indexOfUserToPartiallyUpdate]
};
return Ok(model);
}
А вот тело JSON, которое я отправляю через почтальона в запросе HTTP PATCH:
Я чувствую, что мне нужно что-то сделать в файле Startup.cs, например, настроить JsonPatchDocument, но я не знаю, как это сделать. Любая помощь очень ценится.
Я думаю, что нашел вашу проблему: «Обратите внимание, что мы всегда отправляем массив операций, даже если вы отправляете только одну операцию».
Попробуйте изменить свой запрос в:
[
{
"op": "replace",
"path": "/email",
"value": "[email protected]"
}
]
Это сработал Вадим. Большое спасибо за Ваш ответ.
Хорошо Спасибо, Вадим. Я попробую позже, после работы, и дам вам знать, если это решение.