Qual é a diferença entre
request.ContentType = "application / json; charset = utf-8";
e
webRequest.ContentType = "application / x-www-form-urlencoded";
Qual é a diferença entre
request.ContentType = "application / json; charset = utf-8";
e
webRequest.ContentType = "application / x-www-form-urlencoded";
Respostas:
O primeiro caso é informar ao servidor da web que você está postando dados JSON como em:
{ Name : 'John Smith', Age: 23}
A segunda opção é informar ao servidor da web que você codificará os parâmetros no URL como em:
Name=John+Smith&Age=23
application/x-www-form-urlencoded
confundiria o servidor (Elixir usando Poison no meu caso) e resultaria em uma análise inadequada do objeto (de alguma forma, converteu a matriz aninhada de objetos para um mapa, em vez de uma lista). O uso application/json
deve ser a escolha correta neste caso.
webRequest.ContentType = "application / x-www-form-urlencoded";
De onde vem o nome do aplicativo / x-www-form-urlencoded ?
Se você enviar uma solicitação HTTP GET , poderá usar os parâmetros de consulta da seguinte maneira:
http://example.com/path/to/page
nome = furão & cor = roxo
O conteúdo dos campos é codificado como uma sequência de consultas. O application/x-www-form-
urlencoded
nome vem do parâmetro de consulta de URL anterior, mas os parâmetros de consulta estão onde o corpo da solicitação e não o URL.
Os dados inteiros do formulário são enviados como uma sequência de consultas longa. A sequência de consultas contém pares nome-valor separados por & caractere
por exemplo, campo1 = valor1 & campo2 = valor2
Pode ser uma solicitação simples chamada simples - não acione uma verificação de comprovação
A solicitação simples deve ter algumas propriedades. Você pode procurar aqui para mais informações. Uma delas é que existem apenas três valores permitidos para o cabeçalho Content-Type para solicitações simples
3.Para árvores de parâmetros principalmente planas, application / x-www-form-urlencoded é testado e testado.
request.ContentType = "application / json; charset = utf-8";
axios e superagent , duas das bibliotecas HTTP npm mais populares, funcionam com corpos JSON por padrão.
{ "id": 1, "name": "Foo", "price": 123, "tags": [ "Bar", "Eek" ], "stock": { "warehouse": 300, "retail": 20 } }
Agora, se a solicitação não for simples , o navegador envia automaticamente uma solicitação HTTP antes da original pelo método OPTIONS para verificar se é seguro enviar a solicitação original. Se estiver ok, envie a solicitação real. Você pode procurar aqui para mais informações.
x-www-form-urlencoded
para solicitações AJAX como votação etc. A resposta é enviada de voltaJSON
. Eu acho que é melhor ter um par simétrico de solicitação / resposta, ou seja, ambos JSON.