Seguindo com a proposta de trazer um conteúdo mais rápido e prático de RESt API's, hoje vamos falar um pouco sobre o uso de PUT e PATCH, mas vou fazer um resumo sobre cada verbo HTTP.
GET
Esse é o que a maior parte das pessoas conhece, uma tradução ipsis literis do verbo te ajuda a entender que deve ser usado para obter algum recurso do servidor. Se você abrir o debug do chrome em qualquer página que estiver navegando vai ver centenas de chamadas GET obtendo informações/artefatos/assets usando o método GET. O mais importante aqui é que esse verbo NÃO deve alterar nenhum estado no servidor de origem.
POST
Diria que esse é o segundo mais usado, mas tem a função de criar um recurso no servidor. Pensando em um CRUD, esse é o cara responsável pelo CREATE. Por ser a porta de entrada do recurso em questão, devemos trabalhar muito com as validações para tornar esse recurso usável dentro da nossa aplicação. É aqui que você implementa coisas como:
- Validar CPF
- Garantir que o formato da Data esteja correto
DELETE
Acho que esse é o mais fácil de entender. Seu objetivo é o que você imagina, deletar (ou marcar como removido) um recurso específico. Inclusive a própria RFC diz que é algo semelhante ao comando rm do linux, expressa uma operação de exclusão no mapeamento de URI do servidor de origem.
PUT
Esse verbo na sua essência existe para solicitar uma alteração a um recurso em um servidor, e aqui que boa parte das pessoas se perdem uma vez que ele se propõe a alterar TODO o recurso em questão (passando todos os atributos de fato).
Ex:
Estado antes da requisição
{
"nome": "Elon Musk",
"idade": 50,
"dataAniversario": "1971-06-28"
}
Estado após chamada (alterando, nome e idade mas sendo necessário fornecer aniversário também)
PUT /clientes/1
{
"nome": "Elon Musk 1",
"idade": 51,
"dataAniversario": "1971-06-28"
}
PATCH
Aqui o verbo também indica uma alteração no estado daquele recurso, mas o escopo é menor. Esse método deve ser usado como forma de atualizar 1 (ou mais atributos) garantindo a consistência da entidade como um todo.
Ex:
Estado antes da requisição
{
"nome": "Elon Musk",
"idade": 50,
"dataAniversario": "1971-06-28"
}
Estado após chamada (alterando, nome apenas)
PATCH /clientes/1
{
"nome": "Elon Musk da Silva"
}
{
"nome": "Elon Musk da Silva",
"idade": 50,
"dataAniversario": "1971-06-28"
}
Existem questões mais técnicas acerca dos dois verbos, e acho que o importante lembrar (para não esquecer mais), é saber que por definição o PUT é idempotente enquanto o PATCH não.
Tem algo sobre RESt API`s que gostaria de saber mais?? Deixa ai nos comentários!!!
Top comments (0)