Individuare le risorse e rappresentanza con Ajax

Individuare le risorse e rappresentanzaREST promuove la separazione della risorsa dalla rappresentazione. Per scopi illustrativi, mettiamoci al lavoro attraverso la Stock storico-esempio ticker. L'URL utilizzato per recuperare le informazioni storiche ticker è / services/historical/AMZN/2006. Il formato di default generato dal servizio web viene CSV, ma il default potrebbe altrettanto facilmente sono stati XML o JavaScript Object Notation (JSON). Se un client può accettare solo JSON, quindi la conversione da CSV a JSON richiede un ulteriore passaggio e risorse supplementari.

  

Per ottimizzare questa applicazione, è possibile lasciare che il server di decidere quali contenuti per generare in base alle esigenze del cliente. Se il cliente vuole JSON, allora il server genera JSON. "I dati che viene generato come JSON, XML e CSV è lo stesso. Così, si può affermare che i dati è la risorsa, e JSON, XML e CSV sono la rappresentazione. Separa la risorsa dalla rappresentazione significa che una URL unica avrà rappresentazioni separate. La rappresentazione che viene inviato dipende dal valore della HTTP Accept-* header, ma non ha bisogno di essere l'unico. Concentriamoci sul l'intestazione HTTP Accept e considerare la seguente conversazione HTTP che restituisce alcuni contenuti.

 RichiestaGET / HTTP/1.1 Host services/historical/AMZN/2006: 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 / jpeg ,*/*; q = 0.5 Accept-Language: it -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 RispostaHTTP/1.1 200 OK Date: Mon, 21 Aug 2006 14:51:40 GMT Server: Apache/2.0.53 (Ubuntu) Last-Modified: Gio, 11 May 2006 17:43:45 GMT ETag: "41419c-45 - 438fd340 "Accept-Ranges: bytes Content-Length: 69 Keep-Alive: timeout = 15, max = 100 Connection: Keep-Alive Content-Type: text / html; charset = UTF-8

La richiesta è un HTTP GET, il che significa che il server HTTP ha bisogno di recuperare i dati associati con la risorsa. L'operazione diventa specifico quando la richiesta fornisce le intestazioni HTTP Accept, Accept-Language, Accept-Encoding, e Accept-Charset. Queste intestazioni HTTP sono accettati dal server HTTP e servire come un'indicazione di ciò che il contenuto da inviare. Concentrandosi sugli header HTTP Accept, i valori sono una serie di identificatori MIME-encoded che il cliente accetterà.

L'ordine e il tipo di identificazione sono importanti, perché specificare la priorità dei contenuti che il cliente desidera ricevere dal server. La logica è quella di inviare il contenuto a disposizione con la priorità definite dal cliente che, per esempio, costringe il server per inviare contenuti HTML prima di testo normale. La priorità dei contenuti è la priorità dei tipi MIME come definito nella specifica HTTP. Il seguente elenco viene generato quando si riordinare la richiesta ad esempio:

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

L'ordinamento degli identificatori dipende dalla specializzazione identificativo e il suo valore q. Un identificatore di tipo MIME che non ha alcun valore q indica un valore di default di 1,0. Quando il valore aq esiste, si deve abbassare la priorità del identificatore di tipo MIME per il valore specificato dal valore q. Specializzazione Identifier è quando un identificatore è una priorità più alta perché il contenuto di cui è più specifica l'identificatore di altri. Nella lista delle priorità, il testo identificativo / xml è più specifica * / * perché * / * vuol dire tutto. Inoltre, text / xml è più specifico di text / *, e quindi text / xml è una priorità maggiore.

Si noti che il primo identificatore MIME dalla conversazione HTTP è text / xml, e la seconda è application / xml. Eppure, in ordine di priorità, il primo identificatore MIME è application / xhtml + xml. Ho fatto questa ipotesi, dopo aver letto la HTTP e le specifiche MIME, ma sento che è un bug che appena successo al lavoro.

Let's sezionare la richiesta di esempio per capire perché questo bug è accaduto al lavoro. Il tipo MIME identificatori application / xml, text / xhtml xml e application / xml-sono considerati specifici, e ciascuno ha il valore di aq 1. Se il server segue l'ordine dei tipi MIME, significa che il browser preferisce ricevere i contenuti XML in HTML o XHTML il contenuto. La domanda / xml e text / xml tipi MIME sono contenuti XML, anche se il contenuto XML può essere contenuti XHTML. Leggere le specifiche risolve il problema con la frase per quanto riguarda la priorità di ordinazione dei tipi MIME, in cui si afferma genericamente che un tipo MIME più specifica è ordinato prima di un tipo meno specifico MIME. Ciò significa application / xhtml-xml è ordinato prima di application / xml e text / xml, perché application / xhtml-xml è specificamente formato XML. La conversazione esempio HTTP illustrato che il browser è stato esplicito in quello che voleva. Ci sono i browser, tuttavia, che non non indica con precisione ciò che vogliono, come dimostra la conversazione HTTP seguenti.

 RichiestaGET / services/historical/AMZN/2006 Accept: * / * Accept-Language: en-ca 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 Alcuni browser inviare l'identificativo del tipo Accetto * / *, il che significa in sostanza, "Send me quello che hai, io l'accetterò mai." Tale richiesta è estremamente inutile e rende difficile attuare la separazione delle la risorsa della rappresentazione. La soluzione a questo problema è quello di definire una rappresentazione di default per l'identificatore * / *. Non è una soluzione ideale, ma una soluzione generato dalla necessità di inviare qualcosa. Più probabile, a quei clienti che inviano * / * sono HTML browser basati su web.

un articolo presentato da Sonja Lande


Disclaimer:Il nostro sito non è responsabile per il contenuto di questo articolo. Webarticles è una risorsa gratuita di informazioni.
Importante: Questo articolo "che identifica la risorsa e la rappresentazione utilizzando Ajax" è stato tradotto da un software automatico. Ci dispiace per eventuali errori di ortografia che possono essersi verificati. Grazie per la vostra comprensione.


Online: 350 users browsing the articles directory