design-apis-guide

View on GitHub

Guia para Design de APIs

HTTP: Verbos


A motivação para o desenvolvimento do REST foi criar um modelo de arquitetura de como a web deveria funcionar. - Roy Fielding 1


Entre os príncípios para a construção de APIs REST, está a criação de recursos que tenham uma URI única que será usada para identifica-los. Esses recursos podem ser manipulados utilizando requisições HTTP 2, essas requisições utilizam os famosos Verbos HTTP.

Cada um deles implementa uma semântica diferente, mas alguns recursos são compartilhados por um grupo deles, como por exemplo, qualquer método de requisição pode ser do tipo safe, idempotent ou cacheable. 3

Safe: um verbo HTTP é seguro se ele não altera o estado do recurso, ou seja, um verbo seguro leva a uma operação de somente leitura. Todos os métodos seguros também são idempotentes, porém nem todos idempotentes são seguros. 4

Idempotent: um verbo HTTP é idempotente se uma requisição idêntica pode ser feita uma ou mais vezes em sequência, com o mesmo efeito enquanto deixa o recurso no mesmo estado. 5

Cacheable: um verbo HTTP armazenável em cache é uma resposta que pode ser cacheada. Nem todas as respostas HTTP podem ser cacheadas, para esses casos permite-se a indicação no cabeçalho da requisição. 6


Verbo HTTP Safe Idempotent Cacheable
GET ✔️ ✔️ ✔️
HEAD ✔️ ✔️ ✔️
OPTIONS ✔️ ✔️ -
TRACE - ✔️ -
PUT - ✔️ -
DELETE - ✔️ -
POST - - *
PATCH - - -
CONNECT - - -

[*] Somente se as informações de atualização estiverem incluídas 3


GET

Requisições utilizando verbos GET solicita um recurso específicado, além disso, essas requisições só devem recuperar dados. 7

O verbo HEAD solicita os cabeçalhos retornados de um recurso específico que foi requisitado por um verbo HTTP. Este tipo de solicitação pode ser realizada antes de baixar um recurso muito grande para economizar largura de banda. 8

OPTIONS

O verbo OPTIONS é utilizado para que um cliente possa descobrir quais as opções de requisição são permitidas para um determinado recurso do servidor.9

TRACE

O verbo TRACE é utilizado para fazer debug para o recurso de destino, ele realiza um teste de loopback enviando uma mensagem por todo o caminho até o recurso alvo no qual foi destinado. O destinatário deve responder a mensagem, removendo alguns campos e devolvendo HTTP Status Code 200 e o cabeçalho necessário. 10

PUT

O verbo PUT é utilizado para atualizar um recurso ou substitui a representação do recurso com novos dados (atualizada todas as informações). 11

DELETE

O verbo DELETE é utilizado para remover um recurso específico. 12

POST

O verbo POST é utilizado para enviar os dados para ser criado um novo recurso. O tipo de corpo da requisição deve ser especificado no cabeçalho Content-Type, por exemplo, Content-Type: application/json. A diferença entre o PUT e o POST é que o PUT é idempotente, ou seja, chama-lo diversas vezes vai ter o mesmo resultado, enquanto chamar o POST diversas vezes pode ocasionar a criação de diversos recursos, como por exemplo, criar várias ordens de pagamento. 13

PATCH

O verbo PATCH é utilizado para realizar atualizações parciais em um recurso. 14

CONNECT

O verbo CONNECT começa a comunicação bidirecional com o recurso solicitado. Ele pode ser usado para abrir um túnel. 15



⬅️ voltar para menu

➡️ próximo tópico URLs



Referências: