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

Faltando esclarecimento no PUT - Aula 11

Olá, de acordo com o vídeo o Guilherme comenta que existem 2 formas de alterar a quantidade. Porém só explicou 1.

Gostaria de saber qual seria esta segunda forma, pois creio que ele esqueceu durante a apresentação.

Obrigado

3 respostas

Fala aí Felipe blz?

Quando trabalhamos com REST temos dois métodos/verbos do protocolo HTTP responsáveis por fazer alterações: PUT, PATCH.

O PUT deve ser usando quando você quer substituir um recurso por outro (equivalente à alterar todas as propriedades do seu objeto.)

Já o PATCH é usado quando você quer fazer uma substituição parcial do seu recursos ou substituir somente algumas informações.

De uma olhada na RFC referente ao PATCH: https://datatracker.ietf.org/doc/rfc5789/?include_text=1

O engraçado é que o JAX-RS por padrão não tem a anotação para o método/verbo PATCH. E caso haja a necessidade de utiliza-lo é preciso cria-la.

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@HttpMethod("PATCH")
public @interface PATCH {
}

Espero ter ajudado

Opa, Fernando,

Hj em dia no mercado é adotado qual modelo, na plataforma Java ?

solução!

Opa fala aí Felipe,

Eu particularmente uso os dois modelos, o que uso para decidir entre um e o outro é o valor semântico da operação que quero efetuar.

Por exemplo, imagine que temos a seguinte URI /usuarios/1 e esta representação de usuário dentre outras informações tenha um atributo e-mail. Para alterar o e-mail do usuário eu utilizaria o PATCH passando por exemplo {"email": "novo@email.com"} pois estou alterando somente uma parte pequena da minha representação.

Agora vamos supor que eu tenho uma representação de um pagamento /pagamentos/1 e nessa representação é armazenado uma representação de estado do pagamento (EM ABERTO, PAGO, CONFIRMADO, CANCELADO).

Para fazer as transições do estado desse pagamento eu utilizaria o PUT pois estou alterando a representação toda.

Obviamente nada me impede de utilizar o PUT ao invés do PATCH sempre que eu precisar atualizar. Mas costumo avaliar a semântica que quero dar a operação.

Espero ter ajudado.