Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Sie können über zwei URL-Formulare auf Azure DevOps-Organisationsressourcen und -APIs zugreifen:
| URL-Formular | Beispiel |
|---|---|
| Neu | https://dev.azure.com/{organization} |
| Erbe | https://{organization}.visualstudio.com |
REST-APIs auf Organisationsebene akzeptieren beide URL-Formulare, unabhängig davon, wann Sie die Organisation erstellt haben. Weitere Informationen finden Sie in der REST-API-Referenz zu Azure DevOps Services.
Primäre URL
Jede Organisation verfügt über eine festgelegte primäre URL im neuen oder älteren Formular. Ein Administrator kann die primäre URL ändern. Die Standardeinstellung basiert auf dem Zeitpunkt, an dem Sie die Organisation erstellt haben:
| Erstellt | Primäre Standard-URL |
|---|---|
| Am oder nach dem 10. September 2018 | Neu |
| Vor dem 10. September 2018 | Erbe |
Verwendung der primären URL
Azure DevOps verwendet die primäre URL als Basis für alle URLs, die sie in Hintergrundaufträgen und automatisierten Szenarien erstellt, darunter:
- Umgebungsvariablen für Pipelineaufgaben (z. B
SYSTEM_TEAMFOUNDATIONCOLLECTIONURI. ) - Dienst-Hooks Ereignis Payloads (wie URLs in
resourceContainers) - E-Mail, Slack, Microsoft Teams und ähnliche Benachrichtigungen
Der folgende Aufgabenausschnitt zeigt beispielsweise die Organisations-URL an:
$orgUrl = $env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI
Write-Host $orgUrl
Die Ausgabe hängt vom primären URL-Formular der Organisation ab – entweder https://dev.azure.com/{organization} oder https://{organization}.visualstudio.com. Stellen Sie sicher, dass Ihre Pipelines Tasks und Dienst-Hooks Consumer beide URL-Formen verarbeiten.
In REST-APIs zurückgegebene URLs
Unabhängig von der primären URL einer Organisation verwenden URLs, die in der Antwort auf einen REST-API-Aufruf zurückgegeben werden, dieselbe Basis-URL wie die anfordernde URL. Diese Funktion stellt sicher, dass Clients, die eine REST-API mit einer Legacy-URL aufrufen, weiterhin URLs im selben (Legacy)-Formular abrufen. Wenn beispielsweise die Projects-REST-API mithilfe einer Legacy-URL aufgerufen wird, verwenden URLs in der Antwort das Legacyformular:
Anfrage
GET https://Fabrikam.visualstudio.com/_apis/projects/MyProject
Antwort
{
"id": "e4e4e4e4-ffff-aaaa-bbbb-c5c5c5c5c5c5",
"name": "MyProject",
"url": "https://Fabrikam.visualstudio.com/_apis/projects/MyProject"
}
Das Aufrufen derselben API mithilfe der neuen URL (https://dev.azure.com/Fabrikam/_apis/projects/MyProject) führt zu URLs, die im neuen URL-Formular zurückgegeben werden.
Bewährte Methoden
So halten Sie Ihre Erweiterung, Ihr Tool oder Ihre Integration für URL-Änderungen widerstandsfähig:
- Gehen Sie nicht von einem festen Organisations-URL-Formular aus. Sie kann sich im Laufe der Zeit ändern.
- Analysieren oder speichern Sie keine URLs, um andere URLs zu erstellen.
- Gehen Sie nicht davon aus, dass sich eine REST-API immer in derselben Domäne befindet.
- Verwenden Sie nach Möglichkeit von Microsoft bereitgestellte Clientbibliotheken (.NET, Node.js, Python), da sie die URL-Auflösung automatisch verarbeiten.
Abrufen der URL einer Organisation
Sie können die Basis-URL einer Organisation anhand ihres Namens oder ihrer ID auflösen, indem Sie die globale REST-API der Resource Areas verwendenhttps://dev.azure.com/_apis/resourceAreas. Diese API erfordert keine Authentifizierung.
Ein Ressourcenbereich ist eine Gruppe verwandter REST-API-Endpunkte, die durch eine feste GUID identifiziert werden. Jeder Ressourcenbereich kann eine andere Basis-URL für jede Organisation haben. Die Build-APIs von Fabrikam könnten zum Beispiel https://dev.azure.com/Fabrikam verwenden, während die Release Management-APIs https://vsrm.dev.azure.com/Fabrikam verwenden.
Hinweis
Die REST-API für Ressourcenbereiche gibt URLs basierend auf der festgelegten primären URL der Organisation zurück.
Nach Organisationsname
Ersetzen Sie {organizationName} durch den Namen der Organisation. Die GUID 79134C72-4A58-4B42-976C-04E7115F32BF identifiziert den Zentralen Ressourcenbereich, der Ressourcen wie Projekte enthält.
Anfrage
GET https://dev.azure.com/_apis/resourceAreas/79134C72-4A58-4B42-976C-04E7115F32BF
?accountName={organizationName}&api-version=5.0-preview.1
Antwort
{
"id": "79134C72-4A58-4B42-976C-04E7115F32BF",
"name": "Core",
"locationUrl": "https://dev.azure.com/Fabrikam"
}
Das locationUrl Feld enthält die Basis-URL der Organisation.
Nach Organisations-ID
Um die URL anhand der Organisations-GUID anstelle des Namens aufzulösen, verwenden Sie den Abfrageparameter hostId (anstelle von accountName).
GET https://dev.azure.com/_apis/resourceAreas/79134C72-4A58-4B42-976C-04E7115F32BF?hostId={organizationId}&api-version=5.0-preview.1
Abrufen der Basis-URL für eine REST-API
Verwenden Sie die REST-API auf Organisationsebene, um die richtige Basis-URL für jede REST-API nachzuschlagen. Dieser Ansatz sorgt dafür, dass Ihr Code stabil bleibt, wenn sich API-Domänen ändern.
Hinweis
Von Microsoft bereitgestellte Clientbibliotheken (.NET, TypeScript, Node.js, Python) behandeln die URL-Suche automatisch. In .NET gibt VssConnection.GetClient<T>() beispielsweise einen Client zurück, der bereits an die korrekte Basis-URL gebunden ist.
Wenn Sie keine Clientbibliothek verwenden:
Suchen Sie die Ressourcenbereichs-ID für die API, die Sie in der Tabelle "Ressourcenbereichs-ID" benötigen. Der Bereichsname erscheint in der Regel nach
/_apis/in der Route. Gehört z. B/_apis/release/definitions. zumreleaseBereich (aaaabbbb-0000-cccc-1111-dddd2222eeee).Rufen Sie die REST-API für Ressourcenbereiche auf Organisationsebene mit dieser ID auf:
GET https://dev.azure.com/Fabrikam/_apis/resourceAreas/aaaabbbb-0000-cccc-1111-dddd2222eeee?api-version=5.0-preview.1Verwenden Sie das
locationUrlFeld aus der Antwort als Basis-URL. In diesem Beispiel lautethttps://vsrm.dev.azure.com/Fabrikamdie Basis-URL für die Versionsverwaltung .
Für die REST-API für Ressourcenbereiche sind keine Anmeldeinformationen erforderlich.
Beispiel: Aufrufen der Releases-REST-API aus einer Pipelineaufgabe
Diese Pipelineaufgabe löst die richtige Basis-URL für die Releases-REST-API mithilfe der Organisations-URL aus der SYSTEM_TEAMFOUNDATIONCOLLECTIONURI Umgebungsvariable auf.
Hinweis
Ressourcenbereichs-IDs sind fest und können sicher in Vorgänge und andere Logik eingebettet werden.
$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"
Ressourcenbereich-IDs
In der folgenden Tabelle sind IDs für allgemeine Ressourcenbereiche aufgeführt. Ressourcenbereich-IDs sind in allen Azure DevOps Services-Organisationen fest und konsistent.
| Ressourcenbereichs-ID | Name |
|---|---|
| 0d55247a-1c47-4462-9b1f-5e2125590e6 | Konto |
| 5D6898BB-45EC-463F-95F9-54D49C71752E | Bauen |
| 79bea8f8-c898-4965-8c51-8bbc3966faa8 | collection |
| 79134C72-4A58-4B42-976C-04E7115F32BF | Kern |
| 31c84e0a-3ece-48fd-a29d-100849af99ba | Dashboard |
| A0848FA1-3593-4AEC-949C-694C73F4C4CE | delegierte Authentifizierung |
| 6823169a-2419-4015-b2fd-6fd6f026ca00 | Diskussion |
| A85B8835-C1A1-4AAC-AE97-1C3D0BA72DBD | verteilte Aufgabe |
| 7bf94c77-0ce1-44e5-a0f3-263e4ebbf327 | drop |
| 6c2b0933-3600-42ae-bf8b-93d4f7e83594 | extensionManagement |
| 67349c8b-6425-42f2-97b6-0843cb037473 | Favorit |
| 4E080C62-FA21-4FBC-8FEF-2A10A2B38049 | Git |
| 4E40F190-2E3F-4D9F-8331-C7788E833080 | graph |
| 68DDCE18-2501-45F1-A17B-7931A9922690 | Mitgliederberechtigungsverwaltung |
| b3be7473-68ea-4a81-bfc7-9530baaa19ad | NuGet |
| 4C83CFC1-F33A-477E-A789-29D38FFCA52E | npm |
| 45fb9450-a28d-476d-9b0f-fb4aedddff73 | package |
| 7AB4E64E-C4D8-4F50-AE73-5EF2E21642A5 | Verpackung |
| 2E0BF237-8973-4EC9-A581-9C3D679D1776 | Rohrleitungen |
| FB13A388-40DD-4A04-B530-013A739C72EF | Politik |
| 8ccfef3d-2b87-4e99-8ccb-66e343d2daa8 | Profil |
| aaaabbbb-0000-cccc-1111-dddd2222eeee | Freigabe |
| 57731FDF-7D72-4678-83DE-F8B31266E429 | Berichterstellung |
| EA48A0A1-269C-42D8-B8AD-DDC8FCDCF578 | Suche |
| 3B95FB80-FDA-4218-B60E-1052D070AE6B | Test |
| C83EAF52-EDF3-4034-AE11-17D38F25404C | Testergebnisse |
| 8AA40520-446D-40E6-89F6-9C9F9CE44C48 | TFVC |
| 970AA69F-E316-4D78-B7B0-B7137E47A22C | user |
| 5264459E-E5E0-4BD8-B118-0985E68A4EC5 | Witz |
| 1d4f49f9-02b9-4e26-b826-2cdb6195f2a9 | Arbeit |
| 85f8c7b6-92fe-4ba6-8b6d-fbb67c809341 | Arbeitsverfolgung |
Programmgesteuertes Navigieren mit dem HostNavigationService
Die IHostNavigationService Schnittstelle ermöglicht Erweiterungen die Interaktion mit dem übergeordneten Host Frame. Erweiterungen können ihn verwenden, um den URL-Hash zu lesen und festzulegen, zu URLs zu navigieren, die Seite neu zu laden und Abfrageparameter zu verwalten.
import * as SDK from "azure-devops-extension-sdk";
import { CommonServiceIds, IHostNavigationService } from "azure-devops-extension-api";
const navService = await SDK.getService<IHostNavigationService>(CommonServiceIds.HostNavigationService);
Hashwert
// 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");
Navigation und Fenster
// 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");
Neuladen und Dokumenttitel
navService.reload();
navService.setDocumentTitle("My Custom Page Title");
Abfrageparameter
// 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: "" });
Die vollständige API finden Sie unter "IHostNavigationService " und "CommonServiceIds".