Método URI HTTP/versão
Cabeçalhos
Linha em branco
Corpo da requisição
Classificação dos Métodos HTTP
| Categoria | Métodos | Descrição |
|---|---|---|
| Métodos Seguros | GET, HEAD, OPTIONS | Não devem alterar recursos |
| Métodos Idempotentes | GET, HEAD, PUT, DELETE, OPTIONS | Mesmo efeito ao executar múltiplas vezes |
| Métodos Cacheáveis | GET, HEAD, POST | Respostas podem ser armazenadas em cache |
Detalhamento dos Métodos Principais
1. **GET** - Obter um Recurso
GET /servicos/produtos/456 HTTP/1.1
Host: plataforma.dados.com
Accept: application/json
- Propósito: Recuperar dados sem efeitos colaterais.
- Idempotência: Sim
- Segurança: Sim
- Cacheável: Sim
- Corpo da Requisição: Geralmente vazio.
- Corpo da Resposta: Contém o recurso solicitado.
2. **POST** - Criar um Recurso
POST /servicos/produtos HTTP/1.1
Host: plataforma.dados.com
Content-Type: application/json
Content-Length: 50
{"nome": "Item A", "preco": 29.99, "categoria": "Eletronicos"}
- Propósito: Enviar dados para criar um novo recurso.
- Idempotência: Não (chamadas repetidas podem gerar múltiplos recursos).
- Segurança: Não
- Cacheável: Apenas se explicitamente configurado.
- Cenários Comuns: - Criação de novos recursos. - Submissão de formulários. - Upload de arquivos.
3. **PUT** - Substituir um Recurso
PUT /servicos/produtos/456 HTTP/1.1
Host: plataforma.dados.com
Content-Type: application/json
Content-Length: 55
{"nome": "Item A Atualizado", "preco": 34.99, "categoria": "Eletronicos"}
- Propósito: Substituir completamente um recurso existente.
- Idempotência: Sim
- Segurança: Não
- Cacheável: Não
- Característica: O cliente fornece a representação completa do recurso.
4. **PATCH** - Atualização Parcial
PATCH /servicos/produtos/456 HTTP/1.1
Host: plataforma.dados.com
Content-Type: application/json-patch+json
Content-Length: 40
[{"op": "replace", "path": "/preco", "value": 39.99}]
- Propósito: Modificar partes específicas de um recurso.
- Idempotência: Depende da implementação.
- Segurança: Não
- Cacheável: Não
- Formatos de Conteúdo: - JSON Patch (RFC 6902) - JSON Merge Patch (RFC 7396) - Formatos personalizados.
5. **DELETE** - Remover um Recurso
DELETE /servicos/produtos/456 HTTP/1.1
Host: plataforma.dados.com
- Propósito: Excluir o recurso identificado.
- Idempotência: Sim (remover uma vez ou múltiplas vezes tem o mesmo resultado).
- Segurança: Não
- Cacheável: Não
6. **HEAD** - Obter Cabeçalhos
HEAD /servicos/produtos/456 HTTP/1.1
Host: plataforma.dados.com
- Propósito: Recuperar apenas cabeçalhos de resposta, sem o corpo.
- Idempotência: Sim
- Segurança: Sim
- Cacheável: Sim
- Usos Típicos: - Verificar existência de um recurso. - Obter metadados (tamanho, tipo, etc.). - Validar eficácia do cache.
7. **OPTIONS** - Consultar Métodos Suportados
OPTIONS /servicos/produtos HTTP/1.1
Host: plataforma.dados.com
Exemplo de resposta: ```
HTTP/1.1 200 OK Allow: GET, POST, PUT, DELETE, OPTIONS
- **Propósito**: Listar os métodos HTTP permitidos para um recurso.
- **Idempotência**: Sim
- **Segurança**: Sim
- **CORS**: Utiilzado em pré-requisições de compartilhamento de recursos.
#### 8. \*\*TRACE\*\* - Ecoar a Requisição
TRACE /servicos/produtos HTTP/1.1 Host: plataforma.dados.com
- **Propósito**: Diagnóstico; o servidor devolve a requisição original recebida.
- **Segurança**: ⚠️ Cuidado com ataques XST (rastreamento entre sites).
- **Aplicação Prática**: Depuração de cadeias de proxies.
#### 9. \*\*CONNECT\*\* - Estabelecer um Túnel
CONNECT proxy.seguro.com:443 HTTP/1.1 Host: proxy.seguro.com:443
- **Propósito**: Criar um túnel de comunicação para o servidor de destino (usado principalmente com proxies HTTPS).
- **Segurança**: Não
### Outros Métodos Relevantes
#### 10. \*\*LINK & UNLINK\*\* (Obsoletos)
LINK </imagens/banner.png>; rel=preload HTTP/1.1 UNLINK </imagens/banner.png> HTTP/1.1
- Definidos para estabelecer/remover relações entre recursos (raramente implementados).
#### 11. \*\*PURGE\*\* (Cache)
- Utilizado por servidores de cache como Varnish ou Squid para limpar recursos específicos.
#### 12. \*\*LOCK & UNLOCK\*\* (WebDAV)
LOCK /documentos/relatorio.pdf HTTP/1.1 UNLOCK /documentos/relatorio.pdf HTTP/1.1
- Extensão do WebDAV para mecanismos de bloqueio de arquivos.
### Tabela Comparativa de Propriedades dos Métodos
| Método | Idempotente | Seguro | Cacheável | Corpo da Requisição | Corpo da Resposta | Uso Principal |
|---|---|---|---|---|---|---|
| GET | Sim | Sim | Sim | Não deve ter | Sim | Obter recursos |
| POST | Não | Não | Às vezes | Sim | Sim | Criar recursos |
| PUT | Sim | Não | Não | Sim | Sim | Substituir recursos |
| PATCH | Possível | Não | Não | Sim | Sim | Atualização parcial |
| DELETE | Sim | Não | Não | Possível | Possível | Remover recursos |
| HEAD | Sim | Sim | Sim | Não deve ter | Não | Obter cabeçalhos |
| OPTIONS | Sim | Sim | Não | Não deve ter | Sim | Consultar métodos |
| TRACE | Sim | Não | Não | Não deve ter | Sim | Diagnóstico |
| CONNECT | Não | Não | Não | Não | Não | Estabelecer túneis |
</div>