Seria possível atualizar por exemplo dois campos pelo PATCH? Como seria?
Seria possível atualizar por exemplo dois campos pelo PATCH? Como seria?
Oi
Sim, é possível atualizar múltiplos campos utilizando o método PATCH. No caso do .NET 6, você pode utilizar a biblioteca JSONPatch para realizar essa atualização parcial.
No código do FilmeController.cs
, você precisa adicionar o parâmetro JSONPatchDocument<UpdateFilmeDto> patch
no método AtualizaFilmeParcial
. Esse parâmetro representa o JSON parcial que contém as informações que você deseja atualizar.
Dentro do método, você pode aplicar as alterações utilizando o método ApplyTo
do objeto patch
. Por exemplo, se você quiser atualizar o campo "titulo" e o campo "genero", você pode fazer o seguinte:
patch.ApplyTo(filmeParaAtualizar, ModelState);
Em seguida, você pode validar o modelo filmeParaAtualizar
utilizando o método TryValidateModel
. Se o modelo for válido, você pode mapear as alterações para o objeto filme
e salvar as mudanças no banco de dados.
if (!TryValidateModel(filmeParaAtualizar))
{
return ValidationProblem(ModelState);
}
_mapper.Map(filmeParaAtualizar, filme);
_context.SaveChanges();
Dessa forma, você consegue atualizar múltiplos campos utilizando o método PATCH.
Massa! Obrigado pela resposta!
Porém acho que eu também não fui muito específico. Me referia como seria a chamada pelo Postman por exemplo?!
No vídeo, eu vi que ele colocou no body:
{ "op" : "replace", "path" : "/titulo", "value" : "Avatar" }
Como seria atualizar numa única requisição o título e a duração por exemplo?
Agradeço desde já.
Ola Arthur, basta ao realizar o patch, colocar uma virgula para separar os diferentes objetos que voce deseja, exemplo:
[ { "op" : "replace", "path" : "/titulo", "value" : "Avatar" }, { "op" : "replace", "path" : "/duracao", "value" : "200" } ]
Ah bacana!
Muito Obrigado Nicolas!