Comporre richieste HTTP e gestire gli errori
Data di pubblicazione: gennaio 2017
Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
L'interazione con l'API Web avviene tramite la composizione e l'invio di richieste HTTP. È necessario sapere come impostare le intestazioni HTTP appropriate e gestire eventuali errori inclusi nella risposta.
In questo argomento
Versioni e URL API Web
Metodi HTTP
Intestazioni HTTP
Individuare i codici di stato
Analizzare gli errori dalla risposta
Versioni e URL API Web
Per accedere all'API Web devi creare un URL mediante i componenti nella tabella seguente.
Elemento |
Descrizione |
---|---|
Protocollo |
Il protocollo appropriato, https:// o http://. |
URL di base |
Questo è l'URL normalmente utilizzato per aprire l'applicazione Web.
|
Percorso API Web |
Il percorso all'API Web è /api/data/. |
Versione |
La versione viene espressa in questo modo: v[Major_version].[Minor_version][PatchVersion]/. Le versioni valide per questa versione sono:
Il valore specifico utilizzato non è importante con questa versione se sono stati applicati i corrispondenti aggiornamenti o Service Pack. Per ulteriori informazioni, vedere Compatibilità della versione |
Risorsa |
Nome dell'entità, funzione o azioni da utilizzare. |
L'URL che verrà utilizzato sarà composto con queste parti: protocollo + URL di base + percorso API Web + versione + risorsa.
Compatibilità della versione
In questa versione è stata applicata una serie di modifiche additive con ogni aggiornamento o Service Pack. Quando si applicano aggiornamenti, vengono aggiunte le stesse funzionalità alle versioni secondarie successive. Per questo motivo, se puoi utilizzare la versione 8.2, le versioni 8.1 e 8.0 includeranno le stesse funzionalità. Questo è possibile perché tutte le modifiche sono additive o correzioni di bug che risolvono i problemi elencati in Limitazioni API Web di Microsoft Dynamics 365. Non sono state aggiunte modifiche importanti.
Nota
La versione principale (v9) successiva include funzionalità disponibili solo utilizzando tale versione. Le versioni successive secondarie possono offrire funzionalità aggiuntive che non verranno riportate nelle versioni secondarie precedenti. Il codice scritto per le versioni v8.x continuerà a funzionare nelle versioni v9.x quando si fa riferimento a v8.2 nell'URL utilizzato.
Per la versione v8.x, utilizza la versione più recente possibile e tieni presente che gli aggiornamenti o Service Pack in questa versione principale non introdurranno modifiche importanti. Tuttavia, questo sarà diverso nelle versioni future in cui sarà necessario prestare maggiore attenzione alla versione del servizio interessato.
Metodi HTTP
Le richieste HTTP possono applicare vari metodi diversi. Quando si utilizza l'API Web, si utilizzano solo i metodi elencati nella tabella seguente.
Metodo |
Uso |
---|---|
GET |
Da utilizzare per il recupero di dati, incluse le chiamate alle funzioni. Il codice di stato previsto per un recupero corretto è 200 OK. |
POST |
Da utilizzare per la creazione di entità o la chiamata ad azioni. |
PATCH |
Da utilizzare per l'aggiornamento di entità o l'esecuzione di operazioni upsert. |
DELETE |
Da utilizzare per l'eliminazione di entità o di singole proprietà delle entità. |
PUT |
Da utilizzare in situazioni limitate per aggiornare singole proprietà delle entità. Questo metodo non è consigliato per l'aggiornamento della maggior parte delle entità. Si utilizza per l'aggiornamento delle entità modello. |
Intestazioni HTTP
Benché il protocollo OData consenta entrambi i formati JSON e ATOM, l'API Web supporta solo JSON. È pertanto possibile applicare le seguenti intestazioni.
Ogni richiesta deve includere il valore dell'intestazione Accept di application/json, anche quando non è previsto alcun corpo di risposta. Qualsiasi errore visualizzato nella risposta verrà restituito come JSON. Benché il codice dovrebbe funzionare anche se l'intestazione non è inclusa, si consiglia di includerla come procedura consigliata.
La versione corrente di OData è 4.0, ma le versioni future possono permettere nuove funzionalità. Per evitare ambiguità sulla versione di OData che verrà applicata al codice in tale punto in futuro, è opportuno includere sempre un'istruzione esplicita della versione corrente di OData e la versione massima da applicare nel codice. Utilizzare entrambe le intestazioni OData-Version e OData-MaxVersion impostate su un valore 4.0.
Tutte le intestazioni HTTP devono includere almeno le intestazioni seguenti.
Accept: application/json OData-MaxVersion: 4.0 OData-Version: 4.0
Ogni richiesta che include dati JSON nel corpo della richiesta deve includere un'intestazione Content-Type con un valore di application/json.
Content-Type: application/json
È possibile utilizzare intestazioni aggiuntive per abilitare funzionalità specifiche.
Per restituire i dati pe le operazioni di creazione (POST) o aggiornamento (PATCH) per le entità, includi la preferenza return=representation. Quando la preferenza è applicata alla richiesta POST, una risposta completata avrà lo stato 201 (Created). Per una richiesta PATCH, una risposta completata avrà lo stato 200 (OK). Senza questa preferenze, entrambe le operazioni restituiranno lo stato 204 (No Content) per riflettere che non sono stati restituiti dati nel corpo della risposta per impostazione predefinita.
Nota
Questa funzionalità è stata aggiunta con Aggiornamento di dicembre 2016 per Dynamics 365 (online e locale).
Per restituire valori formattati con una query, includi la odata.include-annotationspreferenza impostata su Microsoft.Dynamics.CRM.formattedvalueutilizzando l'intestazione Prefer.Ulteriori informazioni:Includere valori formattati
L'intestazione Prefer si utilizza anche con l'opzione odata.maxpagesize per specificare quante pagine si desidera restituire.Ulteriori informazioni:Specifica il numero di entità da restituire in una pagina
Per rappresentare un altro utente quando il chiamante dispone dei privilegi necessari a tale scopo, aggiungere l'intestazione MSCRMCallerID con il valore systemuserid dell'utente da rappresentare.Ulteriori informazioni:Rappresentare un altro utente usando l'API Web.
Per applicare la concorrenza ottimistica, puoi applicare l'intestazione If-Match con un valore Etag.Ulteriori informazioni:Applicare la concorrenza ottimistica.
Per abilitare il rilevamento duplicati per una richiesta di POST, puoi utilizzare l'intestazione MSCRM.SuppressDuplicateDetection: false.Ulteriori informazioni:244259ca-2fbc-4fd4-9a74-6166e6683355#bkmk_SuppressDuplicateDetection
Per determinare se un'operazione upsert deve effettivamente creare o aggiornare un'entità, puoi utilizzare le intestazioni If-Match e If-None-Match.Ulteriori informazioni:Upsert di un'entità.
Quando si eseguono operazioni batch, è necessario applicare un numero di intestazioni diverse nella richiesta, con ciascuna parte inviata nel corpo.Ulteriori informazioni:Eseguire operazioni in batch usando l'API Web.
Individuare i codici di stato
Indipendentemente dal fatto che la richiesta HTTP abbia esito positivo o negativo, la risposta include un codice di stato. I codici di stato restituiti dall'API Web Microsoft Dynamics 365 includono i seguenti.
Codice |
Descrizione |
Tipo |
---|---|---|
200 OK |
Quando l'operazione restituisce dati nel corpo della risposta, si riceve quanto segue. |
Migrazione completata |
201 Created |
Prevedi questa operazione quando viene completata l'operazione POST dell'entità ed hai specificato la preferenza return-representation nella richiesta. Nota Questa funzionalità è stata aggiunta con Aggiornamento di dicembre 2016 per Dynamics 365 (online e locale). |
Migrazione completata |
204 No Content |
Quando l'operazione ha esito negativo ma non restituisce dati nel corpo della risposta, si riceve quanto segue. |
Operazione completata |
304 Not Modified |
Quando si verifica se un'entità è stata modificata dall'ultimo recupero, si riceve quanto segue.Ulteriori informazioni:Recuperi condizionali |
Reindirizzamento |
403 Forbidden |
Per i seguenti tipi di errori, si riceve quanto segue:
|
Errore client |
401 Unauthorized |
Per i seguenti tipi di errori, si riceve quanto segue:
|
Errore client |
413 Payload Too Large |
Quando la lunghezza richiesta è troppo grande, si riceve quanto segue. |
Errore client |
400 BadRequest |
Quando un argomento non è valido, si riceve quanto segue. |
Errore client |
404 Not Found |
Quando la risorsa non esiste, si riceve quanto segue. |
Errore client |
405 Method Not Allowed |
Questo errore si verifica in caso di combinazioni errate di metodo e risorsa. Ad esempio, non è possibile utilizzare DELETE o PATCH in una raccolta di entità. Per i seguenti tipi di errori, si riceve quanto segue:
|
Errore client |
412 Precondition Failed |
Per i seguenti tipi di errori, si riceve quanto segue:
|
Errore client |
500 Internal Server Error |
Questo errore è previsto quando una richiesta POST per creare un'entità consente il rilevamento duplicati e l'entità per creare sarebbe un duplicato.Ulteriori informazioni:244259ca-2fbc-4fd4-9a74-6166e6683355#bkmk_SuppressDuplicateDetection |
Errore server |
501 Not Implemented |
Quando un'operazione richiesta non viene implementata, si riceve quanto segue. |
Errore server |
503 Service Unavailable |
Quando il servizio API Web non è disponibile, si riceve quanto segue. |
Errore server |
Analizzare gli errori dalla risposta
I dettagli sugli errori sono inclusi come JSON nella risposta. Gli errori avranno il formato che segue.
{ "error":{ "code": "
<This code is not related to the http status code and is frequently empty>", "message": "
<A message describing the error>", "innererror": { "message": "
<A message describing the error, this is frequently the same as the outer message>", "type": "Microsoft.Crm.CrmHttpException", "stacktrace": "
<Details from the server about where the error occurred>" } } }
Vedere anche
Eseguire operazioni tramite l'API Web
Query di dati tramite l'API Web
Creare un'entità utilizzando l'API Web
Recupera un'entità utilizzando l'API Web
Aggiorna ed elimina le entità con l'API Web
Associa e annulla associazione entità con l'API Web
Utilizzare le funzioni API Web
Utilizzare le azioni API Web
Eseguire operazioni in batch usando l'API Web
Rappresentare un altro utente usando l'API Web
Eseguire operazioni condizionali tramite l'API Web
Microsoft Dynamics 365
© 2017 Microsoft. Tutti i diritti sono riservati. Copyright