# POST (HTTP)

Em computação, POST é um dos muitos métodos de requisição suportados pelo protocolo HTTP usado na World Wide Web. O método de requisição POST foi projetado para solicitar que o servidor web aceite os dados anexados no corpo da mensagem de requisição para armazenamento. Ele é normalmente usado quando se faz o upload de um arquivo ou envia-se um formulário web completo.
Em contraste o método de requisição GET do HTTP foi projetado para recuperar informações do servidor. Como parte de uma solicitação GET, alguns dados podem ser passados dentro da string de consulta do URI, especificando, por exemplo, termos de consulta, intervalos de datas ou outras informações que definem a consulta. Como parte de uma requisição POST, uma quantia de dados arbitrária de qualquer tipo pode ser enviada ao servidor em um corpo de mensagem de requisição. Um campo de cabeçalho na requisição POST normalmente indica o tipo de mídia da Internet do corpo da mensagem.

## Enviando dados

A World Wide Web e o HTTP são baseados em um número de métodos ou 'verbos' de requisição, incluindo POST e GET, bem como PUT, DELETE e vários outros. Os navegadores web normalmente usam apenas GET e POST, mas aplicativos online RESTful utilizam muitos outros. A função do POST, no conjunto de métodos HTTP, é enviar uma representação de uma nova entidade de dados ao servidor de forma que ele seja armazenado como um novo subordinado do recurso identificado pelo URI. Por exemplo, para o URI http://exemplo.com.br/clientes, requisições POST podem ser esperadas para representar novos clientes, cada um incluindo seu nome, endereço, detalhes de contato e assim por diante. Os primeiros designers de sites web desviaram-se deste conceito original em dois importantes caminhos:
* Primeiro, não há razão técnica para um URI descrever textualmente o recurso web subordinado para o qual os dados do POST serão armazenados. De fato, a menos que algum esforço seja feito, a última parte de um URI descreverá muito possivelmente a página de processamento da aplicação web e sua tecnologia, como http://exemplo.com.br/formaplicacao.php.
* Segundo, dada a limitação natural da maioria dos navegadores web a utilizarem apenas GET ou POST, os desenvolvedores sentiram a necessidade de dar um novo propósito ao POST para realizar muitas outras submissões de dados e tarefas de gerenciamento de dados, incluindo a alteração de registros existentes e sua deleção.

## Uso para envio de formulário web

Quando um navegador web envia uma requisição POST de um elemento web form, o tipo de mídia da Internet padrão é "application/x-www-form-urlencoded". Este é um formado para codificação de pares chave-valor com chaves possivelmente duplicadas. Cada par chave-valor é separado por um caractere '&' e cada chave é separada de seu valor por um caractere '='. Chaves e valores são ambos escapados pela substituição de espaços com o caractere '+' e então utilização de codificação de URL em todos os caracteres não-alfanuméricos.
Por exemplo, os pares chave-valor
são codificados como
Começando com o HTML 4.0, os formulários também enviam dados em multipart/form-data como definido na RFC 2388 (ver também RFC 1867 para uma versão experimental mais antiga definida como uma extensão ao HTML 2.0 e mencionada no HTML 3.2).
O caso especial de um POST à mesma página que o fomulário pertence é conhecido como um postback.