Métodos de requisição HTTP explicados
O HTTP define nove métodos de requisição padrão, mas a maior parte do tráfego diário usa apenas alguns. Esta tabela explica cada método, se é seguro e idempotente e os códigos retornados por uma chamada bem-sucedida.
| Método | Finalidade | Seguro? | Idempotente? | Status de sucesso |
|---|---|---|---|---|
| GET | Retrieve a resource | Yes | Yes | 200 OK |
| HEAD | Retrieve headers only, no body | Yes | Yes | 200 OK |
| POST | Create a resource or trigger an action | No | No | 201 Created |
| PUT | Replace a resource entirely | No | Yes | 200 OK / 204 No Content |
| PATCH | Apply a partial update | No | No | 200 OK |
| DELETE | Remove a resource | No | Yes | 200 OK / 204 No Content |
| OPTIONS | CORS preflight; list allowed methods | Yes | Yes | 204 / 200 OK |
| TRACE | Echo the request back for diagnostics | Yes | Yes | 200 OK |
| CONNECT | Open a tunnel, e.g. HTTPS via a proxy | No | No | 200 OK |
Notas
- Seguro significa que o método nunca altera o estado do servidor: GET, HEAD, OPTIONS e TRACE são os únicos seguros.
- Idempotente significa que repetir a chamada dá o mesmo resultado que uma única: PUT, DELETE e GET cumprem; POST e PATCH não.
- Quando uma rota não aceita um método, o servidor responde 405 Method Not Allowed e normalmente inclui o cabeçalho Allow.
Perguntas frequentes
- Qual é a diferença entre GET e POST?
- GET recupera um recurso sem efeitos colaterais e pode ser repetido com segurança; os parâmetros vão na URL. POST cria algo ou dispara uma ação, pode alterar o estado e não deve ser repetido às cegas.
- O que significa um método HTTP ser seguro?
- Um método seguro nunca modifica o estado do servidor, então pode ser chamado sem risco. GET, HEAD, OPTIONS e TRACE são seguros; POST, PUT, PATCH e DELETE não são.
- Qual é a diferença entre PUT e PATCH?
- PUT substitui todo o recurso pelo que você envia; PATCH aplica uma alteração parcial apenas em campos selecionados. PUT é idempotente, repeti-lo dá o mesmo resultado; PATCH em geral não é.
- O que o método HEAD faz?
- HEAD funciona como GET, mas não retorna corpo de resposta. É útil para verificar se um recurso existe, seu tamanho ou cabeçalhos, sem baixar todo o conteúdo.