Identificar os recursos e Representação usando Ajax

Identificar os recursos e RepresentaçãoREST promove a separação do recurso da representação. Para fins de ilustração, vamos trabalhar com o material histórico-exemplo ticker. A URL usada para recuperar a informação histórica é ticker / services/historical/AMZN/2006. O formato padrão gerado pelo serviço Web é CSV, mas o padrão poderia tão facilmente ter sido XML ou JavaScript Object Notation (JSON). Se um cliente só pode aceitar JSON, em seguida, a conversão de CSV para JSON requer um passo adicional e recursos extra.

  

Para otimizar este aplicativo, você pode deixar o servidor decidir qual o conteúdo para gerar base nas necessidades do cliente. Se o cliente quiser JSON, o servidor irá gerar JSON. Os dados que são gerados como JSON, XML e CSV é tudo a mesma coisa. Assim, pode-se dizer que os dados é o recurso, e JSON, XML e CSV são a representação. Separando o recurso da representação significa que um único URL terá representações em separado. A representação que é enviado depende do valor da Accept HTTP-* header, mas não precisa ser o único. Vamos nos concentrar no cabeçalho HTTP Accept e considerar a conversa seguinte HTTP que retorna o conteúdo algum.

 SolicitarGET / services/historical/AMZN/2006 HTTP/1.1 Host: 192.168.1.242:8100 User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv: 1.7.8) Gecko / 20050511 Accept: text / xml, application / xml, application / xhtml + xml, text / html; q = 0.9, text / plain; q = 0.8, image / png ,*/*; q = 0.5 Accept-Language: en -us, en; q = 0.5 Accept-Encoding gzip:, deflate Accept-Charset: ISO-8859-1, UTF-8; q = 0.7, *; q = 0.7 Keep-Alive: 300 Connection: Keep-Alive RespostaHTTP/1.1 200 OK Date: Mon, 21 Aug 2006 14:51:40 GMT Server: Apache/2.0.53 (Ubuntu) Last-Modified: Qui, 11 May 2006 17:43:45 GMT ETag: "41419c-45 - Intervalos 438fd340 "Accept-: bytes Content-Length: 69 Keep-Alive: timeout = 15, max = 100 Connection: Keep-Alive Content-Type: text / html; charset = UTF-8

O pedido é um HTTP GET, o que significa que o servidor HTTP precisa recuperar os dados associados com o recurso. A operação torna-se específico quando o pedido fornece os cabeçalhos HTTP Accept, Accept-Language, Accept-Encoding, e Accept-Charset. Estes cabeçalhos HTTP são aceitos pelo servidor HTTP e servem como uma indicação de qual o conteúdo a ser enviado. Centrando-se no cabeçalho HTTP Accept, os valores são um conjunto de identificadores MIME-codificado que o cliente irá aceitar.

A ordem eo tipo de identificador são importantes, porque eles especificam a prioridade do conteúdo que o cliente quer receber do servidor. A lógica é de enviar o conteúdo disponível com a prioridade definida pelo cliente que, por exemplo, força o servidor para enviar conteúdo HTML antes do conteúdo de texto simples. A prioridade de conteúdo é a prioridade dos tipos MIME como definido na especificação HTTP. A lista a seguir é gerado quando você reordenar o pedido de exemplo:

1. application / xhtml + xml 2. text / xml 3. application / xml 4. image / png 5. text / html; q = 0,9 6. text / plain; q = 0,8 7. * / *; q = 0,5

A ordenação dos identificadores depende do identificador de especialização e seu valor q. Um identificador de tipo de MIME que não tem nenhum valor q indica um valor padrão de 1,0. Quando o valor aq existe, você deve baixar a prioridade do identificador de tipo MIME para o valor especificado pelo valor q. Especialização identificador é quando um identificador é uma prioridade maior, porque o conteúdo especificado é mais específico do que o outro identificador. Na lista de prioridades, o identificador de texto / xml é mais específico do * / * porque * / * significa tudo. Além disso, text / xml é mais específico do que o texto / *, e, portanto, text / xml é uma prioridade mais elevada.

Observe que o identificador de MIME a partir da primeira conversa HTTP é text / xml, eo segundo é a aplicação / xml. No entanto, na ordem de prioridade, o primeiro é o identificador MIME application / xhtml + xml. Fiz essa hipótese, depois de ter lido o HTTP e as especificações MIME, mas eu sinto que é um bug que aconteceu para o trabalho.

Vamos analisar o pedido de exemplo para entender por que esse erro aconteceu com o trabalho. O tipo MIME identificadores de aplicação / xml, text / xhtml xml e application / xml-são considerados específicos, e cada um tem valor aq de 1. Se o servidor segue a ordenação dos tipos de MIME, isso significa que o navegador prefere receber o conteúdo XML para HTML ou conteúdo XHTML. A aplicação / xml e texto / xml são tipos MIME conteúdo XML, embora o conteúdo XML poderia ser de conteúdo XHTML. Lendo a especificação resolve o problema com a frase sobre a prioridade de ordenação dos tipos MIME, que genericamente diz que um tipo de MIME mais específicas é ordenada antes de um tipo de MIME menos específicas. Isto significa application / xhtml-xml é ordenada antes da aplicação / xml e texto / xml, porque application / xhtml-xml é especificamente formatado XML. O exemplo ilustrado conversa HTTP que o navegador era explícito no que queria. Existem navegadores que embora não não indicar explicitamente o que querem, como ilustra a conversa seguinte HTTP.

 SolicitarGET / services/historical/AMZN/2006 Accept: * / * Accept-Language: pt-br Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0, Windows NT 5.1 SV1;. NET CLR 2.0.50215;. NET CLR 1.1.4322)

Connection: Keep-Alive Alguns navegadores enviar o identificador do tipo Accept * / *, o que significa, essencialmente, "Send me tudo o que tenho, vou aceitá-lo." Esse pedido é extremamente inúteis e torna difícil implementar a separação de o recurso da representação. A solução para este problema é definir uma representação padrão para o identificador * / *. Não é uma solução ideal, mas uma solução fora gerou a necessidade de enviar algo. Muito provavelmente, aqueles clientes que enviam * / * são baseadas em HTML browsers.

um artigo submetido por Sonja Lande


Isenção de responsabilidade:O nosso site não se responsabiliza pelo conteúdo deste artigo. Webarticles é uma fonte de informação livre.
Importante: Este artigo "Identificando os recursos e Representação usando Ajax" foi traduzida por um software automático. Nós sentimos muito por quaisquer erros de ortografia que pode ter ocorrido. Obrigado pela sua compreensão.


Online: 312 users browsing the articles directory