Métodos de solicitação HTML

O que é HTTP?

O Protocolo de Transferência de Hipertexto (Hypertext Transfer Protocol, abreviado como HTTP) visa permitir a comunicação entre o cliente e o servidor.

HTTP atua como um protocolo de solicitação-resposta entre o cliente e o servidor.

Exemplo: o cliente (navegador) envia uma solicitação HTTP para o servidor; em seguida, o servidor retorna a resposta para o cliente. A resposta contém informações sobre o estado da solicitação, e pode conter o conteúdo solicitado.

Métodos HTTP

  • GET
  • POST
  • PUT
  • HEAD
  • DELETE
  • PATCH
  • OPTIONS

Os dois métodos mais comuns são: GET e POST.

Método GET

GET é usado para solicitar dados de um recurso específico.

GET é um dos métodos HTTP mais comuns.

Atenção, a string de consulta (par de nome/valor) é enviada na URL da solicitação GET:

/test/demo_form.php?name1=value1&name2=value2

Alguns outros comentários sobre solicitações GET:

  • Solicitações GET podem ser armazenadas em cache
  • Solicitações GET são mantidas no histórico do navegador
  • Solicitações GET podem ser salvas como favoritos
  • Não deve usar solicitações GET para dados sensíveis
  • Solicitações GET têm restrições de comprimento
  • Solicitações GET devem ser usadas apenas para recuperar dados (sem modificar).

Método POST

POST é usado para enviar dados para o servidor para criar/actualizar um recurso.

Os dados enviados para o servidor através do POST são armazenados no corpo da solicitação HTTP:

POST /test/demo_form.php HTTP/1.1
Host: codew3c.com
name1=value1&name2=value2

POST é um dos métodos HTTP mais comuns.

Alguns outros comentários sobre solicitações POST:

  • A solicitação POST não será armazenada em cache
  • A solicitação POST não será mantida no histórico do navegador
  • POST não pode ser salvo como favorito
  • A solicitação POST não tem restrições de comprimento de dados

Método PUT

PUT é usado para enviar dados para o servidor para criar/actualizar um recurso.

A diferença entre POST e PUT está no fato do PUT ser idempotente (idempotent). Isso significa que várias chamadas do mesmo PUT sempre produzirão o mesmo resultado. Por outro lado, repetir chamadas de POST terá o efeito colateral de criar múltiplas vezes o mesmo recurso.

Método HEAD

HEAD é quase idêntico ao GET, mas sem corpo de resposta.

Em outras palavras, se GET /users retornar uma lista de usuários, HEAD /users emitirá a mesma solicitação, mas não retornará a lista de usuários.

A solicitação HEAD é útil para verificar o conteúdo que a solicitação GET retornará antes de realmente enviar a solicitação GET (por exemplo, antes de baixar um grande arquivo ou antes de enviar o corpo da resposta).

Método DELETE

O método DELETE remove o recurso especificado.

Método OPTIONS

O método OPTIONS descreve as opções de comunicação do recurso alvo.

Comparar GET com POST

A tabela abaixo compara dois métodos HTTP: GET e POST.

  GET POST
Botão de voltar/refresh Inofensivo Os dados serão enviados novamente (o navegador deve informar ao usuário que os dados serão enviados novamente).
Favorito Pode ser salvo como favorito Não pode ser salvo como favorito
Cache Pode ser armazenado em cache Não pode ser cacheado
Tipo de codificação application/x-www-form-urlencoded application/x-www-form-urlencoded ou multipart/form-data. Use codificação múltipla para dados binários.
Histórico Os parâmetros são mantidos no histórico do navegador. Os parâmetros não são armazenados no histórico do navegador.
Restrições de comprimento de dados Sim. Quando dados são enviados, o método GET adiciona dados à URL; o comprimento da URL é limitado (o comprimento máximo da URL é de 2048 caracteres). Sem restrições.
Restrições de tipo de dados Apenas caracteres ASCII são permitidos. Sem restrições. Também permite dados binários.
Segurança

Em comparação com POST, GET tem menor segurança, pois os dados enviados são parte da URL.

Nunca use GET ao enviar senhas ou outras informações sensíveis!

O POST é mais seguro do que o GET, pois os parâmetros não são armazenados no histórico do navegador ou no log do servidor web.
Visibilidade Os dados são visíveis para todos na URL. Os dados não serão exibidos na URL.