Condividi tramite


Introduzione alle API REST

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Le API REST di Azure DevOps offrono un potente accesso a livello di codice agli elementi di lavoro, ai repository, alle compilazioni, alle versioni e altro ancora. Indipendentemente dal fatto che si stia creando integrazioni personalizzate, automatizzando i flussi di lavoro o estendendo le funzionalità di Azure DevOps, è essenziale comprendere i modelli e i concetti fondamentali per una corretta implementazione.

Suggerimento

Pronto per iniziare a scrivere codice? Passare agli esempi di API REST per esempi di utilizzo completi con modelli di autenticazione moderni.

Questo articolo illustra i concetti e i modelli fondamentali per le API REST di Azure DevOps. Per esempi pratici di implementazione, vedere Esempi di API REST.

Struttura URL

Le API seguono un modello comune, come illustrato nell'esempio seguente:

VERB https://{instance}/{collection}/{team-project}/_apis/{area}/{resource}?api-version={version}

Suggerimento

Man mano che le API si evolvono, è consigliabile includere una versione dell'API in ogni richiesta. Questa procedura consente di evitare modifiche impreviste nell'API che potrebbero interrompersi.

Azure DevOps Services

Per Azure DevOps Services, instance è dev.azure.com/{organization} e collection è DefaultCollection, quindi il modello è simile all'esempio seguente:

VERB https://dev.azure.com/{organization}/_apis/{area}/{resource}?api-version={version}

Endpoint di esempio:

GET https://dev.azure.com/{organization}/_apis/projects?api-version=7.2

Azure DevOps Server

Per Azure DevOps Server, instance è {server:port}. La porta predefinita per una connessione non SSL è 8080.

La raccolta predefinita è DefaultCollection, ma è possibile usare qualsiasi raccolta.

Esempi:

  • SSL: https://{server}/DefaultCollection/_apis/projects?api-version=7.2
  • Non-SSL: http://{server}:8080/DefaultCollection/_apis/projects?api-version=7.2

Autenticazione

Le API REST di Azure DevOps supportano diversi metodi di autenticazione:

  • Microsoft Entra ID - Consigliato per le applicazioni di produzione
  • Token di accesso personale (PAT) - Autenticazione semplice per script e test
  • OAuth 2.0 - Per applicazioni non Microsoft
  • Principali di servizio - Per scenari automatizzati

Importante

L'autenticazione di Microsoft Entra ID è l'approccio consigliato per le applicazioni di produzione. Per esempi di implementazione e linee guida complete sull'autenticazione, vedere Esempi di API REST e linee guida per l'autenticazione.

Formato della risposta

Le API REST di Azure DevOps restituiscono in genere risposte JSON. Ecco una struttura di risposta di esempio:

{
    "value": [
        {
            "id": "00000000-0000-0000-0000-000000000000",
            "name": "Fabrikam-Fiber-TFVC",
            "url": "https://dev.azure.com/fabrikam-fiber-inc/_apis/projects/00000000-0000-0000-0000-000000000000",
            "description": "TeamFoundationVersionControlprojects"
        }
    ],
    "count": 1
}

La risposta è JSON, che è in genere ciò che si ottiene dalle API REST, anche se sono presenti alcune eccezioni, ad esempio BLOB Git.

Suggerimento

Per esempi di lavoro completi che illustrano come analizzare queste risposte, vedere Esempi di API REST.

Metodi e operazioni HTTP

Le API REST di Azure DevOps usano metodi HTTP standard:

Metodo Usato per... Esempio
GET Ottenere una risorsa o un elenco di risorse Ottenere progetti, elementi di lavoro
POST Creare una risorsa o ottenere risorse usando query avanzate Creare elementi di lavoro, eseguire query sugli elementi di lavoro
INSERIRE Creare o sostituire completamente una risorsa Crea/aggiorna elemento di lavoro
Cerotto Aggiornare campi specifici di una risorsa Aggiornare i campi dell'elemento di lavoro
ELIMINA Eliminare una risorsa Eliminare un elemento di lavoro

Suggerimento

Per esempi pratici di ogni metodo HTTP con esempi di codice completi, vedere Esempi di API REST.

Intestazioni e contenuto della richiesta

Quando si fornisce un corpo della richiesta (in genere con POST, PUT e PATCH), includere le intestazioni appropriate:

Content-Type: application/json

Per le operazioni PATCH sugli elementi di lavoro, utilizzare:

Content-Type: application/json-patch+json

Override del metodo HTTP

Alcuni proxy Web possono supportare solo i verbi HTTP GET e POST, ma non verbi HTTP più moderni, ad esempio PATCH e DELETE. Se le chiamate potrebbero passare attraverso uno di questi proxy, è possibile inviare il verbo effettivo usando un metodo POST, con un'intestazione per eseguire l'override del metodo. Ad esempio, potrebbe essere necessario aggiornare un elemento di lavoro (PATCH _apis/wit/workitems/3), ma potrebbe essere necessario passare attraverso un proxy che consenta solo GET o POST. È possibile passare il verbo corretto (PATCH in questo caso) come parametro di intestazione della richiesta HTTP e usare POST come metodo HTTP effettivo.

POST https://dev.azure.com/fabrikam-fiber-inc/_apis/wit/workitems/3
X-HTTP-Method-Override: PATCH
{
   (PATCH request body)
}

Codici di risposta

Comprendere i codici di risposta HTTP consente di gestire le risposte API in modo appropriato:

Risposta Significato Note
200 Successo Il corpo della risposta contiene i dati richiesti
201 Creato Creazione della risorsa avvenuta con successo
204 Successo Nessun corpo della risposta (comune con DELETE)
400 Richiesta non valida Parametri o corpo della richiesta non validi
401 Non autorizzata Autenticazione non riuscita o mancante
403 Vietato L'utente non dispone dell'autorizzazione per l'operazione
404 Non trovato La risorsa non esiste o non esiste alcuna autorizzazione per la visualizzazione
409 Conflitto Conflitti di richiesta con lo stato corrente della risorsa

Controllo delle versioni delle API

Le API REST di Azure DevOps sono versionate per garantire che le applicazioni continuino a funzionare mentre le API si evolvono.

Istruzioni

  • Specificare sempre la versione dell'API con ogni richiesta (richiesta)
  • Formattare le versioni dell'API come: {major}.{minor} o {major}.{minor}-{stage} (ad esempio, 7.2, 7.2-preview)
  • Usare revisioni di anteprima specifiche quando disponibili: 7.2-preview.1, 7.2-preview.2
  • Eseguire l'aggiornamento alle versioni rilasciate quando le API di anteprima sono deprecate

Uso

Specificare la versione dell'API come parametro di query URL:

GET https://dev.azure.com/{organization}/_apis/projects?api-version=7.2

Oppure nell'intestazione della richiesta:

Accept: application/json;api-version=7.2

Per le versioni supportate, vedere Controllo delle versioni dell'API REST.

Altre risorse

Per indicazioni pratiche sull'implementazione e esempi di codice completi, vedere:

Passaggi successivi