Compreendendo os Métodos HTTP em Requisições Web


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 &amp; 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>

Tags: HTTP REST Métodos HTTP desenvolvimento web APIs

Publicado em 7-14 06:22