1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
---
title: POST
slug: Web/HTTP/Methods/POST
tags:
- HTTP
- Método de requisição
- Referencia
translation_of: Web/HTTP/Methods/POST
---
<div>{{HTTPSidebar}}</div>
<p>O <strong>método HTTP <code>POST</code></strong> envia dados ao servidor. O tipo do corpo da solicitação é indicado pelo cabeçalho {{HTTPHeader("Content-Type")}}.</p>
<p>A diferença entre <code>PUT</code> e {{HTTPMethod("POST")}} é que <code>PUT</code> é 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.</p>
<p>Uma solicitação <code>POST</code> geralmente é enviada por meio de um <a href="/pt-BR/docs/Web/Guide/HTML/Forms">formulário HTML</a> e resulta em uma alteração no servidor. Nesse caso, o tipo de conteúdo é selecionado colocando a string adequada no atributo {{htmlattrxref("enctype", "form")}} do elemento {{HTMLElement("form")}} ou o atributo {{htmlattrxref("formenctype", "input")}} dos elementos {{HTMLElement("input")}} ou {{HTMLElement("button")}}:</p>
<ul>
<li><code>application/x-www-form-urlencoded</code>: as chaves e valores são codificados em tuplas de valor-chave separadas por <code>'&'</code>, com um <code>'='</code> entre a chave e o valor. Caracteres não alfanuméricos em chaves e valores são {{glossary ("percent-encoding", "percent encoded")}}: este é o motivo pelo qual esse tipo não é adequado para uso com dados binários (ao invés disso, use <code>multipart/form-data</code>)</li>
<li><code>multipart/form-data</code></li>
<li><code>text/plain</code></li>
</ul>
<p>Quando a requisição <code>POST</code> é enviada através de um método diferente de um formulário HTML - como por meio de um {{domxref("XMLHttpRequest")}} - o corpo pode assumir qualquer tipo. Conforme descrito na especificação HTTP 1.1, o <code>POST</code> é projetado para permitir que um método uniforme cubra as seguintes funções:</p>
<ul>
<li>Anotação de recursos existentes</li>
<li>Postar uma mensagem em um quadro de avisos, newsgroup, lista de emails ou grupo similar de artigos;</li>
<li>Adicionando um novo usuário através de um modal de inscrição;</li>
<li>Fornecendo um bloco de dados, como o resultado do envio de um formulário, para um processo de manipulação de dados;</li>
<li>Estendendo um banco de dados por meio de uma operação de <em>append</em>.</li>
</ul>
<table class="properties">
<tbody>
<tr>
<th scope="row">Requisição tem corpo</th>
<td>Sim</td>
</tr>
<tr>
<th scope="row">Resposta bem-sucedida tem corpo</th>
<td>Sim</td>
</tr>
<tr>
<th scope="row"><a href="https://developer.mozilla.org/pt-BR/docs/Glossary/Safe">Seguro</a></th>
<td>Não</td>
</tr>
<tr>
<th scope="row"><a href="https://developer.mozilla.org/pt-BR/docs/Glossary/Idempotent">Idempotente</a></th>
<td>Não</td>
</tr>
<tr>
<th scope="row"><a href="https://developer.mozilla.org/pt-BR/docs/Glossary/Cacheable">Cacheável</a></th>
<td>Somente se as informações de atualização estiverem incluídas</td>
</tr>
<tr>
<th scope="row">Permitido em <a href="/pt-BR/docs/Web/Guide/HTML/Forms">formulários HTML</a></th>
<td>Sim</td>
</tr>
</tbody>
</table>
<h2 id="Sintaxe">Sintaxe</h2>
<pre class="syntaxbox">POST /index.html
</pre>
<h2 id="Exemplo">Exemplo</h2>
<p>Um simples formulário utilizando o padrão <em>content type</em> <code>application/x-www-form-urlencoded</code>:</p>
<pre class="line-numbers language-html">POST / HTTP/1.1
Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
say=Hi&to=Mom</pre>
<p>Um formulário utilizando o <em>content type</em> <code>multipart/form-data</code>:</p>
<pre>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</pre>
<h2 id="Especificações">Especificações</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Especificação</th>
<th scope="col">Título</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{RFC("7231", "POST", "4.3.3")}}</td>
<td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td>
</tr>
</tbody>
</table>
<h2 id="Compatibilidade_com_navegadores">Compatibilidade com navegadores</h2>
<p class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você quiser contribuir com os dados, consulte <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envie-nos um <em>pull request</em>.</p>
<p>{{Compat("http.methods.POST")}}</p>
<h2 id="Veja_também">Veja também</h2>
<ul>
<li>{{HTTPHeader("Content-Type")}}</li>
<li>{{HTTPHeader("Content-Disposition")}}</li>
</ul>
|