Você pode ter ouvido falar de solicitações GET e POST, mas elas são apenas o começo.

Cada solicitação HTTP usa um método para descrever seu propósito essencial. Cada método tem usos específicos para tarefas que vão desde a busca de uma página da Web até a exclusão de um recurso. GET e POST são os dois mais conhecidos, mas existem outros sete.

Aprenda sobre esse conceito e para que serve cada um dos nove métodos HTTP possíveis.

O que é um método HTTP?

Cada solicitação HTTP que você faz inclui uma ação e um destino para essa ação, muito parecido com um verbo e um substantivo que atuam como um objeto.

A URL identifica um recurso exclusivo, atuando como o destino da solicitação. Enquanto isso, o verbo – qual ação realizar naquela URL – é representado por um método.

A primeira linha de uma solicitação HTTP fornece as informações mais significativas, incluindo a versão HTTP, a URL do recurso e o método de solicitação:

GET /software/htp/cics/index.html HTTP/1.1

Quais são os 9 métodos HTTP?

Os primeiros quatro métodos são equivalentes às quatro ações do modelo CRUD: Criar, Ler, Atualizar e Excluir. Os respectivos métodos HTTP são

instagram viewer
PUBLICAR, PEGAR, COLOCAR, e EXCLUIR.

PEGAR

A solicitação padrão mais comum que você enviará ao navegar na Web e clicar em links ou solicitar dados por meio de uma API. O servidor deve retornar o recurso em seu corpo de resposta.

PUBLICAR

Use POST para criar novos recursos, principalmente quando esses recursos tiverem um recurso pai identificável. Por exemplo, se você tiver um recurso /clients, deverá criar um novo cliente POSTando os dados necessários para /clients.

COLOCAR

Atualize ou substitua um recurso existente. Isso é semelhante ao POST, mas o cliente é responsável por escolher um identificador exclusivo para o recurso. Para criar um recurso usando PUT, o URL do recurso deve incluir um identificador, por exemplo, /clients/007.

EXCLUIR

Use este método para excluir o recurso especificado na URL. Como todos os métodos HTTP, o suporte depende do servidor. Pode permitir que qualquer pessoa exclua um recurso, embora isso seja claramente arriscado. Um servidor que suporta DELETE geralmente requer autenticação e autorização.

Dois outros métodos fornecem pequenas variações sobre o acima: CORREÇÃO e CABEÇA. Você pode achá-los úteis ao usar determinadas APIs ou se estiver criando as suas próprias.

CORREÇÃO

O método PATCH atualiza um recurso existente, com apenas dados parciais. Em outras palavras, você não precisa fornecer a representação completa do novo recurso, apenas os campos que precisa atualizar.

CABEÇA

Uma solicitação HEAD é para quando você deseja informações sobre um recurso, mas não o próprio recurso. A resposta não incluirá um corpo, mas conterá um conjunto de cabeçalhos HTTP úteis. Você pode descobrir o tamanho total de um arquivo antes de baixá-lo, por meio do cabeçalho de resposta Content-Length.

Os métodos restantes—OPÇÕES, CONECTAR, e VESTÍGIO– são mais obscuros. Eles lidam com metadados, rede e solução de problemas. Você pode achá-los úteis em certos tipos de programação, mas provavelmente não os usará todos os dias.

OPÇÕES

Um servidor deve responder a esse método informando quais métodos HTTP o recurso realmente suporta. Isso pode ser útil para a descoberta.

CONECTAR

Certos tipos de software de rede podem usar esse método para estabelecer um túnel entre dois computadores. Isso geralmente é usado para iniciar uma conexão HTTPS por meio de um proxy.

VESTÍGIO

Este método é útil para solução de problemas. Ao recebê-la, o servidor deve devolver a requisição recebida no corpo da resposta. O método fornece um mecanismo para verificar se as máquinas intermediárias alteraram algum detalhe da solicitação.

GET e HEAD são os dois únicos métodos suportados por todos os servidores da Web em geral. Um determinado servidor pode ou não suportar outros métodos, então você deve verificar primeiro.

Quando você pode usar esses métodos?

Na maioria das vezes, os métodos HTTP serão transparentes para você. No entanto, você precisará considerá-los se adicionar um formulário a uma página da Web ou usar uma API.

Métodos HTTP em HTML

O forma do elemento método O atributo permite definir o método HTTP a ser usado quando o formulário é enviado. O HTML suporta apenas o publicar e pegar valores para este atributo - além de uma alternativa de diálogo obscura.

<formamétodo="publicar">
...
forma>

Você pode usar recursos como Ferramentas do desenvolvedor do Chrome ver Rede tráfego e confirme o método que seu navegador envia para uma determinada solicitação. Observe que a maioria dos formulários da Web enviará um POST, pois eles normalmente atualizam os dados no servidor. Muitos formulários de pesquisa, no entanto, usam GET, pois eles simplesmente buscam dados sem alterá-los.

Como os dados POST não fazem parte da URL, eles são mais privados do que se você os enviar por meio de um GET. Os dados ainda existem no corpo da solicitação onde, em teoria, um invasor pode interceptá-los. Mas o envio de dados via HTTPS deve atenuar esse problema.

Você nunca deve implementar um login de usuário com solicitações GET. Mesmo que o login pareça mais uma operação de leitura do que uma criação ou atualização, você ainda precisa usar o POST para proteger os dados.

Como os formulários HTML suportam apenas GET e POST, você não pode criar diretamente um formulário que, por exemplo, exclua um recurso no servidor. Uma solução alternativa comum, que respeita os princípios REST no servidor, é usar uma variável de espaço reservado e fingir que esse é o método HTTP original. Por exemplo:

<formamétodo="publicar">
<entradatipo="escondido"nome="_método"valor="EXCLUIR" />
...
forma>

Seu código do lado do servidor pode verificar a presença dessa variável de 'método proxy' e tratá-la como se fosse o método real usado. Por exemplo, em PHP:

$método = $_SERVER["REQUEST_METHOD"];

se (array_key_exists("_método", $_PEDIDO)) {
$método = $_REQUEST["_método"];
}

Enviando solicitações HTTP programaticamente

A API Web Fetch fornece uma função JavaScript fetch() que você pode usar para enviar uma solicitação HTTP. Ele suporta toda a gama de métodos, não apenas o GET e o POST que o HTML suporta.

A função de busca enviará uma solicitação GET por padrão. Para usar um método diferente, especifique seu nome como o valor para um método propriedade em um objeto que você envia como o segundo argumento.

buscar(' https://example.com/', { método: "CABEÇA" });

Você também pode enviar solicitações HTTP de várias linguagens do lado do servidor, incluindo PHP. Nessa linguagem, a biblioteca curl é uma forma comum de enviar tais solicitações.

A biblioteca curl tem uma opção CURLOPT_CUSTOMREQUEST que você pode definir para especificar um método

se ($ch = curl_init($url)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'COLOCAR');
curl_exec($ch);
// ...
}

Através da linha de comando

A ferramenta de linha de comando curl permite transferir dados de ou para um servidor, por meio de um dos vários protocolos. HTTP (e HTTPS) são dois casos de uso muito comuns.

Por padrão, o curl envia uma solicitação GET, como você pode confirmar com o seguinte comando:

curl -v -s -o /dev/null exemplo.com/get-test

Você pode ver o método request na quinta linha da saída:

Você pode alterar o método de solicitação que o curl envia usando o sinalizador -X:

curl -v -s -o /dev/null exemplo.com/get-test -X POST

Agora, o curl envia uma solicitação usando o método POST:

HTTP tem muitos usos

A maior parte do que você faz na web envolve solicitações GET padrão, com o POST ocasional para envio de formulários. Mas o HTTP é um protocolo muito mais expressivo do que isso sugere.

Alguns dos métodos mais comuns espelham o modelo CRUD, o que torna o HTTP uma excelente base para construir uma API focada em recursos.