Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
È possibile accedere alle risorse e alle API dell'organizzazione di Azure DevOps tramite due moduli URL:
| Modulo URL | Esempio |
|---|---|
| Nuovo | https://dev.azure.com/{organization} |
| Eredità | https://{organization}.visualstudio.com |
Le API REST a livello di organizzazione accettano entrambi i moduli URL, indipendentemente dal momento in cui è stata creata l'organizzazione. Per altre informazioni, vedere Azure DevOps Services REST API Reference (Informazioni di riferimento sull'API REST di Azure DevOps Services).
URL primario
Ogni organizzazione ha un URL primario designato nel formato nuovo o legacy. Un amministratore può modificare l'URL primario. Il valore predefinito è basato su quando è stata creata l'organizzazione:
| Creato | URL primario predefinito |
|---|---|
| A partire dal 10 settembre 2018 | Nuovo |
| Prima del 10 settembre 2018 | Eredità |
Come viene usato l'URL primario
Azure DevOps usa l'URL primario come base per tutti gli URL che costruisce nei processi in background e negli scenari automatizzati, tra cui:
- Variabili di ambiente dell'attività della pipeline (ad esempio
SYSTEM_TEAMFOUNDATIONCOLLECTIONURI) - Payload degli eventi degli hook del servizio (ad esempio URL in
resourceContainers) - Posta elettronica, Slack, Microsoft Teams e notifiche simili
Ad esempio, il frammento di attività seguente visualizza l'URL dell'organizzazione:
$orgUrl = $env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI
Write-Host $orgUrl
L'output dipende dal modulo URL primario dell'organizzazione, https://dev.azure.com/{organization} ovvero o https://{organization}.visualstudio.com. Assicurarsi che entrambi i formati URL siano gestiti dalle attività delle pipeline e dai consumer di hook del servizio.
URL restituiti nelle API REST
Indipendentemente dall'URL primario di un'organizzazione, gli URL restituiti nella risposta a una chiamata API REST usano lo stesso URL di base dell'URL richiedente. Questa funzione garantisce che i client che chiamano un'API REST usando un URL legacy continuino a recuperare gli URL nello stesso formato (legacy). Ad esempio, quando l'API REST Projects viene chiamata usando un URL legacy, gli URL nella risposta usano il formato legacy:
Richiesta
GET https://Fabrikam.visualstudio.com/_apis/projects/MyProject
Risposta
{
"id": "e4e4e4e4-ffff-aaaa-bbbb-c5c5c5c5c5c5",
"name": "MyProject",
"url": "https://Fabrikam.visualstudio.com/_apis/projects/MyProject"
}
Chiamando la stessa API usando il nuovo URL (https://dev.azure.com/Fabrikam/_apis/projects/MyProject), gli URL vengono restituiti nella nuova forma URL.
Procedure consigliate
Per mantenere resiliente l'estensione, lo strumento o l'integrazione alle modifiche dell'URL:
- Non assumere una forma fissa dell'URL dell'organizzazione. Può cambiare nel tempo.
- Non analizzare o archiviare gli URL per costruire altri URL.
- Non presupporre che un'API REST risieda sempre nello stesso dominio.
- Usare le librerie client fornite da Microsoft (.NET, Node.js, Python) quando possibile, perché gestiscono automaticamente la risoluzione degli URL.
Ottenere l'URL di un'organizzazione
È possibile determinare l'URL di base di un'organizzazione dal nome o dall'ID utilizzando l'API REST globale delle Aree Risorse (https://dev.azure.com/_apis/resourceAreas). Questa API non richiede l'autenticazione.
Un'area di risorse è un gruppo di endpoint DELL'API REST correlati identificati da un GUID fisso. Ogni area di risorse può avere un URL di base diverso per ogni organizzazione. Ad esempio, le API di compilazione di Fabrikam possono usare , mentre le API https://dev.azure.com/Fabrikam usano https://vsrm.dev.azure.com/Fabrikam.
Annotazioni
L'API REST delle Aree di Risorse restituisce gli URL in base all'URL primario designato dell'organizzazione.
In base al nome dell'organizzazione
Sostituire {organizationName} con il nome dell'organizzazione. Il GUID 79134C72-4A58-4B42-976C-04E7115F32BF identifica l'area delle risorse di base , che contiene risorse come i progetti.
Richiesta
GET https://dev.azure.com/_apis/resourceAreas/79134C72-4A58-4B42-976C-04E7115F32BF
?accountName={organizationName}&api-version=5.0-preview.1
Risposta
{
"id": "79134C72-4A58-4B42-976C-04E7115F32BF",
"name": "Core",
"locationUrl": "https://dev.azure.com/Fabrikam"
}
Il locationUrl campo contiene l'URL di base dell'organizzazione.
In base all'ID dell'organizzazione
Per risolvere l'URL in base al GUID dell'organizzazione anziché al nome, usare il parametro query hostId (anziché accountName):
GET https://dev.azure.com/_apis/resourceAreas/79134C72-4A58-4B42-976C-04E7115F32BF?hostId={organizationId}&api-version=5.0-preview.1
Ottenere l'URL di base per un'API REST
Utilizzare l'API REST Aree di Risorsa a livello di organizzazione per cercare l'URL di base corretto per qualsiasi API REST. Questo approccio mantiene il codice resiliente quando i domini API cambiano.
Annotazioni
Le librerie client fornite da Microsoft (.NET, TypeScript, Node.js, Python) gestiscono automaticamente la ricerca url. Ad esempio, VssConnection.GetClient<T>() in .NET restituisce un client già associato all'URL di base corretto.
Se non stai usando una libreria client:
Trovare l'ID dell'area di risorse per l'API necessaria nella tabella ID area risorsa. Il nome dell'area viene in genere visualizzato dopo
/_apis/nel percorso. Ad esempio,/_apis/release/definitionsappartiene all'arearelease(aaaabbbb-0000-cccc-1111-dddd2222eeee).Chiamare l'API REST Aree di Risorsa a livello di organizzazione con tale ID.
GET https://dev.azure.com/Fabrikam/_apis/resourceAreas/aaaabbbb-0000-cccc-1111-dddd2222eeee?api-version=5.0-preview.1Usare il
locationUrlcampo dalla risposta come URL di base. In questo esempio, l'URL di base di Release Management èhttps://vsrm.dev.azure.com/Fabrikam.
Non sono necessarie credenziali per l'API REST Resource Areas.
Esempio: Chiamare l'API REST Release da un'attività della pipeline
Questa attività della pipeline risolve l'URL di base corretto per l'API REST Release usando l'URL dell'organizzazione dalla SYSTEM_TEAMFOUNDATIONCOLLECTIONURI variabile di ambiente.
Annotazioni
Gli ID dell'area delle risorse sono fissi e possono essere incorporati in modo sicuro nelle attività e in altre logiche.
$orgUrl = $env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI
$releaseManagementAreaId = "aaaabbbb-0000-cccc-1111-dddd2222eeee"
# Look up the base URL for Release Management APIs
$orgResourceAreasUrl = "${orgUrl}_apis/resourceAreas/${releaseManagementAreaId}?api-version=5.0-preview.1"
$results = Invoke-RestMethod -Uri $orgResourceAreasUrl
$rmUrl = $results.locationUrl
# Call the release definitions API
$releaseDefinitionsUrl = "${rmUrl}/_apis/release/definitions?api-version=5.0-preview.1"
ID aree risorsa
Nella tabella seguente sono elencati gli ID per le aree di risorse comuni. Gli ID area delle risorse sono fissi e coerenti in tutte le organizzazioni di Azure DevOps Services.
| ID area della risorsa | Nome |
|---|---|
| 0d55247a-1c47-4462-9b1f-5e2125590e6 | Conto |
| 5D6898BB-45EC-463F-95F9-54D49C71752E | costruire |
| 79bea8f8-c898-4965-8c51-8bbc3966faa8 | collezione |
| 79134C72-4A58-4B42-976C-04E7115F32BF | nucleo |
| 31C84E0A-3ECE-48FD-A29D-100849AF99BA | pannello di controllo |
| A0848FA1-3593-4AEC-949C-694C73F4C4CE | autenticazione delegata |
| 6823169A-2419-4015-B2FD-6FD6F026CA00 | discussione |
| A85B8835-C1A1-4AAC-AE97-1C3D0BA72DBD | task distribuito |
| 7bf94c77-0ce1-44e5-a0f3-263e4ebbf327 | goccia |
| 6C2B0933-3600-42AE-BF8B-93D4F7E83594 | extensionManagement |
| 67349c8b-6425-42f2-97b6-0843cb037473 | favorito |
| 4E080C62-FA21-4FBC-8FEF-2A10A2B38049 | Git |
| 4E40F190-2E3F-4D9F-8331-C7788E833080 | grafico |
| 68ddce18-2501-45f1-a17b-7931a9922690 | gestione delle assegnazioni dei membri |
| B3BE7473-68EA-4A81-BFC7-9530BAAA19AD | NuGet |
| 4C83CFC1-F33A-477E-A789-29D38FFCA52E | npm |
| 45FB9450-A28D-476D-9B0F-FB4AEDDFF73 | pacchetto |
| 7AB4E64E-C4D8-4F50-AE73-5EF2E21642A5 | imballaggio |
| 2e0bf237-8973-4ec9-a581-9c3d679d1776 | Pipeline |
| FB13A388-40DD-4A04-B530-013A739C72EF | politica |
| 8ccfef3d-2b87-4e99-8ccb-66e343d2daa8 | profilo |
| aaaabbbb-0000-cccc-1111-dddd2222eeee | rilascio |
| 57731FDF-7D72-4678-83DE-F8B31266E429 | reportistica |
| EA48A0A1-269C-42D8-B8AD-DDC8FCDCF578 | ricerca |
| 3B95FB80-FDDA-4218-B60E-1052D070AE6B | prova |
| C83EAF52-EDF3-4034-AE11-17D38F25404C | risultati del test |
| 8AA40520-446D-40E6-89F6-9C9F9CE44C48 | tfvc |
| 970AA69F-E316-4D78-B7B0-B7137E47A22C | utente |
| 5264459E-E5E0-4BD8-B118-0985E68A4EC5 | arguzia |
| 1d4f49f9-02b9-4e26-b826-2cdb6195f2a9 | funzionano |
| 85f8c7b6-92fe-4ba6-8b6d-fbb67c809341 | monitoraggio del lavoro |
Navigare a livello di codice con il servizio HostNavigationService
L'interfaccia IHostNavigationService consente alle estensioni di interagire con il frame host padre. Le estensioni possono usarlo per leggere e impostare l'hash URL, passare agli URL, ricaricare la pagina e gestire i parametri di query.
import * as SDK from "azure-devops-extension-sdk";
import { CommonServiceIds, IHostNavigationService } from "azure-devops-extension-api";
const navService = await SDK.getService<IHostNavigationService>(CommonServiceIds.HostNavigationService);
Valore hash
// Get the current hash
const hash = await navService.getHash();
console.log("Host hash value: " + hash);
// Listen for hash changes
navService.onHashChanged((hash: string) => {
console.log("Hash changed to: " + hash);
});
// Set hash (adds a new browser history entry)
navService.setHash("new-hash-value");
// Replace hash (no new history entry)
navService.replaceHash("replaced-hash-value");
Navigazione e finestre
// Navigate the host page
navService.navigate("https://dev.azure.com/myorg/myproject");
// Open a new browser window
navService.openNewWindow("https://dev.azure.com/myorg/myproject", "height=400,width=600");
Ricaricare e documentare il titolo
navService.reload();
navService.setDocumentTitle("My Custom Page Title");
Parametri di query
// Get current query parameters
const params = await navService.getQueryParams();
console.log(params);
// Set query parameters (pass empty string to remove a parameter)
navService.setQueryParams({ myParam: "value", removeMe: "" });
Per l'API completa, vedere IHostNavigationService e CommonServiceIds.