Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Atulização Parcial - Serviço Rest

Boa tarde!

Gostaria de saber qual a forma usada para atualização parcial de um objeto. Exemplo:

public class Usuario {
    private String nome;
    private String endereco;
}

Então o meu banco já tem um usuário cadastrado, e o único campo que quero alterar dele é o endereço. Com isso vou fazer uma requisição HTTP passando no body apenas o atributo "endereco". Qual séria a melhor solução para meu endpoint receber o json e fazer apenas atualização do endereço desse usuário?

Vi que tem o HTTP tem o método PATCH que pode ser feito usando ele, mas quero saber se tem outras formas, ou se a utilização do PATCH é a melhor prática para essa abordagem.

2 respostas
solução!

Oi Alex, tudo bem?

Seu raciocínio está perfeito! :)

Supondo que façamos um POST para uma API /users com os dados {username: 'alex', email: 'alex@gmail.com'} o servidor irá criar um novo recurso e retornará uma resposta com HTTP response status code 201 contendo a localização do recurso (vamos assumir que seja GET /users/1). Depois da criação desse recurso, qualquer chamada para GET /users/1 retornará {id: 1, username: 'alex', email: 'alex@gmail.com'}.

Agora vamos dizer que quero modificar o e-mail. A modificação de email é considerada "uma alteração parcial" e, portanto, eu devo utilizar o verbo PATCH /users/1 passando um json {email: 'alex.costa@alura.com.br'}. O servidor alteraria o valor do email desse recurso e retornaria um 200.

Existe o verbo PUT também, mas esse geralmente é utilizado quando queremos fazer um update completo no recurso (todos os campos, no nosso exemplo seria email e username).

Espero ter ajudado, qualquer dúvida estou à disposição.

Abraço!

Boa noite, muito obrigado, ajudou muito.