Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Json o XML, negoziazione del contenuto

Il server decide, in base alla richiesta, quale rappresentazione usare per inviare contenuti al client
Il server decide, in base alla richiesta, quale rappresentazione usare per inviare contenuti al client
Link copiato negli appunti

Introducendo le ASP.NET Web API abbiamo detto che prevedono due tipi di rappresentazione delle risorse inviate al client: JSON e XML. La scelta del tipo di rappresentazione è il risultato della cosiddetta negoziazione del contenuto, cioè il processo di selezione della migliore rappresentazione di una risorsa in risposta ad una richiesta.

In altre parole, è il meccanismo con cui il server decide, in base alla richiesta del client, che rappresentazione utilizzare per inviare la risorsa al client.

Secondo le specifiche del protocollo HTTP, questa decisione deve essere effettuata dal server analizzando le seguenti intestazioni della richiesta HTTP:

Header Descrizione
Accept Specifica uno o più media-type per la rappresentazione della risorsa richiesta, come ad esempio text/plain, application/json, application/xml, ecc.
Accept-Charset Specifica quale set di caratteri il client è in grado di accettare, come ad esempio UFT-8, ISO 8859-1, ecc.
Accept-Encoding Consente di specificare la codifica del contenuto, come ad esempio la compressione gzip.
Accept-Language Indica la lingua preferita dal client, come ad esempio it-IT o en-US

Allo stato attuale ASP.NET Web API è in grado di gestire automaticamente le intestazioni Accept e Accept-Charset. La gestione delle altre intestazioni va effettuata tramite codice. Ad esempio, ad una richiesta HTTP di questo tipo:

GET http://localhost:1039/api/items/Web HTTP/1.1
Host: localhost:1039
Accept: application/json, text/plain, */*

la nostra API potrebbe fornire una risposta analoga alla seguente senza alcun intervento da parte nostra all'applicazione:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 254
{"Term":"API","Definition":"Insieme di subroutine o di funzioni ...","Category":"Programming"}

Per ciascun valore delle intestazioni previste per la negoziazione, il client ha la facoltà di specificare la preferenza indicando un valore decimale detto fattore di qualità (quality factor). Ad esempio, la seguente intestazione:

Accept: application/json, application/xml; q=0.8, */*; q=0.2

indica un fattore di qualità implicito di 1.0 per una rappresentazione in JSON, mentre la seconda preferenza va a XML ed infine a qualsiasi altra rappresentazione. Il server dovrebbe soddisfare la richiesta del client seguendo queste preferenze e le proprie disponibilità di rappresentazione.

Ti consigliamo anche