4
respostas

Múltiplos Campos | PATCH

Seria possível atualizar por exemplo dois campos pelo PATCH? Como seria?

4 respostas

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!