POST
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julho de 2015.
O método HTTP POST envia dados ao servidor. O tipo do corpo da solicitação é indicado pelo cabeçalho Content-Type.
A diferença entre PUT e POST é que PUT é idempotente: chamá-lo uma vez ou várias vezes sucessivamente tem o mesmo efeito (ou seja, nenhum efeito colateral), onde sucessivos POST idênticos podem ter efeitos adicionais, assim como passando uma ordem várias vezes.
Uma solicitação POST geralmente é enviada por meio de um formulário HTML e resulta em uma alteração no servidor. Nesse caso, o tipo de conteúdo é selecionado colocando a string adequada no atributo enctype do elemento <form> ou o atributo formenctype dos elementos <input> ou <button>:
application/x-www-form-urlencoded: as chaves e valores são codificados em tuplas de valor-chave separadas por'&', com um'='entre a chave e o valor. Caracteres não alfanuméricos em chaves e valores são percent encoded: este é o motivo pelo qual esse tipo não é adequado para uso com dados binários (ao invés disso, usemultipart/form-data)multipart/form-datatext/plain
Quando a requisição POST é enviada através de um método diferente de um formulário HTML - como por meio de um XMLHttpRequest - o corpo pode assumir qualquer tipo. Conforme descrito na especificação HTTP 1.1, o POST é projetado para permitir que um método uniforme cubra as seguintes funções:
- Anotação de recursos existentes
- Postar uma mensagem em um quadro de avisos, newsgroup, lista de emails ou grupo similar de artigos;
- Adicionando um novo usuário através de um modal de inscrição;
- Fornecendo um bloco de dados, como o resultado do envio de um formulário, para um processo de manipulação de dados;
- Estendendo um banco de dados por meio de uma operação de append.
| Requisição tem corpo | Sim |
|---|---|
| Resposta bem-sucedida tem corpo | Sim |
| Seguro | Não |
| Idempotente | Não |
| Cacheável | Somente se as informações de atualização estiverem incluídas |
| Permitido em formulários HTML | Sim |
Sintaxe
POST /index.html
Exemplo
Um simples formulário utilizando o padrão content type application/x-www-form-urlencoded:
POST / HTTP/1.1
Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
say=Hi&to=Mom
Um formulário utilizando o content type multipart/form-data:
POST /test.html HTTP/1.1
Host: example.org
Content-Type: multipart/form-data;boundary="boundary"
--boundary
Content-Disposition: form-data; name="field1"
value1
--boundary
Content-Disposition: form-data; name="field2"; filename="example.txt"
value2
Especificações
| Especificação | Título |
|---|---|
| RFC 7231, sessão 4.3.3: POST | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content |
Compatibilidade com navegadores
Loading…