O método de solicitação HTTP especificado no protocolo HTTP/1.1 são opções, obtenha, cabeça, posta, put, excluir, rastrear, conectar. Entre eles, a postagem é geralmente usada para enviar dados ao servidor.
Sabemos que o protocolo HTTP é transmitido pelo código ASCII e as especificações da camada de aplicação com base no protocolo TCP/IP. As especificações dividem solicitações HTTP em três partes: linha de estado, chefe de solicitação e assunto da mensagem. Semelhante ao seguinte:
<emone> <pkest-url> <ivision> <headerhers> <entity-body> </ entity-body> </headerhers> </version> </request-url> </métodos> </métodos> </métodos > </Métodos>
O contrato estipula que os dados enviados pela postagem devem ser colocados no corpo da entidade, mas o Contrato não especifica o que os dados devem ser usados. De fato, os desenvolvedores podem determinar o formato do assunto da mensagem por si mesmo.
No entanto, se os dados forem enviados, é significativo ter sucesso no servidor. O idioma geral do servidor, como Java e sua estrutura, construíram funções de análise automática de formatos de dados comuns. O servidor geralmente é aprendido com o campo do tipo conteúdo no chefe de solicitação para saber como o assunto da mensagem na solicitação é codificado na solicitação e depois analisa o assunto. Portanto, quando se trata de postar esquemas de dados enviados, ele contém duas partes: o tipo de conteúdo e a codificação do assunto da mensagem. Aqui estão a introdução oficial a eles.
APLICAÇÃO/X-WWW-FORM-URLENCODEDEsta deve ser a maneira mais comum de enviar dados. Se o formulário nativo do navegador, se o atributo ENCTYPE não estiver definido, os dados serão enviados pelo aplicativo/x-www-forma-urlncoded. A solicitação é semelhante ao seguinte (o cabeçalho irrelevante da solicitação é omitido neste artigo):
Post http://www.example.com http/1.1content-type: Application/x-www forlem-urlencoded; 5b%5d = 3
Antes de tudo, o tipo de conteúdo é especificado como aplicação/x-www-form-urlencoded; A maioria das linguagens do servidor tem um bom suporte para esse método. Por exemplo, no PHP, o post [título ′] pode obter o valor do título.
Muitas vezes, quando enviamos dados com o AJAX, também usamos esse método. Por exemplo, o Ajax do JQuery, o valor padrão do tipo conteúdo é "Application/X-Www-Form-Urlencoded; Charset = UTF-8".
Multipart/Form-DataEsta é outra maneira comum de postar dados. Quando carregamos arquivos com formulários, devemos fazer com que o formulário seja igual a esse valor. Venha diretamente para um exemplo de solicitação:
Post http://www.example.com HTTP/1.1Content-Type: Multipart/Form-Data; --- webkitformboundaryrgkcby7qhfd3trwacontent-Disposição: formulário-dados;
Este exemplo é um pouco complicado. Primeiro de tudo, um limite é usado para dividir diferentes campos. Em seguida, o tipo de conteúdo indica que os dados são codificados por Mutipart/Form-Data, qual é o limite solicitado desta vez. O assunto da mensagem é dividido em partes semelhantes com uma estrutura semelhante, de acordo com o número de seções. ). Se o arquivo for transmitido, ele também contém informações sobre o nome do arquivo e o tipo de arquivo. O assunto da mensagem finalmente terminou com--Boundary-. Para definições detalhadas de Mutipart/Form-Data, vá para RFC1867 para visualizar.
Esse método é geralmente usado para fazer upload de arquivos e a linguagem principal do servidor também possui um bom suporte para ele.
Os dois métodos de dados post mencionados acima são suporte nativo para navegadores, e os formulários nativos suportam apenas esses dois métodos nesta fase. No entanto, à medida que mais e mais sites da Web, especialmente o WebApp, usam o AJAX para interação de dados, podemos definir completamente novos métodos de envio de dados para trazer mais conveniência ao desenvolvimento.
Aplicação/JSONO Application/JSON, o tipo de conteúdo, definitivamente não está familiarizado com o cabeçalho da resposta. De fato, mais e mais pessoas agora o usam como um chefe de solicitação para contar a mensagem do servidor que o corpo principal é uma string json serializada. Devido à popularidade das especificações do JSON, os principais navegadores, exceto a baixa versão, IE, são nativos do JSON.Stringify, e a linguagem do servidor também tem uma função para lidar com o JSON, e o JSON não encontrará nenhum problema.
O formato JSON suporta dados estruturados mais complicados do que os valores -chave, o que também é útil. Lembro -me de quando fiz um projeto há alguns anos, o nível de dados que eu precisava ser enviado foi muito profundo. No entanto, na época, usei a string json como um valor e ainda fui colocado no par de valores-chave e o enviei em x-www-forma-urlncoded.
A função AJAX no AngularJS do Google é enviar a string json por padrão. Por exemplo, o seguinte código:
var dados = {'title': 'test', 'sub': [1,2,3]};
A solicitação final é:
Post http://www.example.com http/1.1content-type: aplicativo/json;
Esse esquema pode enviar facilmente dados estruturados complexos, especialmente adequados para interface RESTful. As principais ferramentas de embalagem, como as ferramentas de desenvolvedor do Chrome, o Firebug e o Fiddler exibirão dados JSON com uma estrutura de árvores, o que é muito amigável. No entanto, existem também alguns idiomas de servidor que não suportam esse método. No momento, você precisa lidar com isso sozinho: quando o tipo de conteúdo é aplicativo/json no cabeçalho da solicitação, obtenha o fluxo de entrada original da entrada php: // e depois json_decode. Algumas estruturas de Java começaram a fazer.
Obviamente, o AngularJS também pode ser configurado para enviar dados com x-www-forma-urlcoded.
Texto/xmlXML-RPC (chamada de procedimento remoto XML). É uma especificação de chamada remota usando HTTP como um protocolo de transmissão e XML como um método de codificação. A solicitação típica xml-rpc é esta: post http://www.example.com http/1.1content-type: text/xml <!-? /MethodName> <amps> <amp> <value> <i4> 41 </i4> </value> </params> </methodcall>
O protocolo XML-RPC é simples e cheio de funções, e a implementação de vários idiomas está disponível. Também é amplamente utilizado, como a API XML-RPC do WordPress, o serviço de ping do mecanismo de pesquisa e assim por diante. No JavaScript, também há uma biblioteca pronta para oferecer suporte à interação de dados dessa maneira, que pode muito bem suportar os serviços XML-RPC existentes. No entanto, eu pessoalmente acho que a estrutura XML ainda está muito inchada.