Zum Hauptinhalt springen




Zeit zu lesen: 4 Protokoll

Postbote ist ein wertvolles Werkzeug für die Arbeit mit APIs, insbesondere beim Testen und bei Ad-hoc-Anforderungen außerhalb einer automatisierten Produktionslösung. In Bezug darauf, wo ein Power BI-Entwickler Postman nützlich finden könnte, liegt es irgendwo dazwischen «Probieren Sie es aus» aus der Dokumentation Funktionalität und eine produktionsfähigere Lösung, die Tools wie Azure DevOps, Logic Apps / Power Automate, einen benutzerdefinierten Power BI-Connector und mehr enthält.

Die Ideen in dieser Publikation erweitern a Originalbeitrag von Carl de Souza. Carl zeigt, wie man ein OAuth2-Zugriffstoken erhält, aber er tut es mit fest codierten Werten. Zusätzliche API-Anforderungen verwenden das Token aus der ursprünglichen Antwort. Sie stellen dieses Token jedoch auch manuell für nachfolgende API-Aufrufe bereit.

Bei den folgenden Schritten wird davon ausgegangen, dass Sie bereits mit den Grundlagen von Postman und Postman vertraut sind Power BI API. Melden Sie sich für eine Power BI Azure Active Directory-App Wenn Sie noch keinen haben, sollten Sie auch den entsprechenden Bereich für Ihre gewünschten Aufgaben definiert haben.

Variablen hinzufügen

Erweiterung der zu verwendenden Postman-Technik Variablen Anstelle von fest codierten Werten wird der Aufwand automatischer und bequemer. Insbesondere wenn das Zugriffstoken zur Wiederverwendung in anderen API-Anforderungen an eine Variable übergeben wird, wird jedes Mal, wenn eine neue Anforderung nach Ablauf eines vorherigen Tokens gestellt wird, ein manuelles Kopieren und Einfügen »[Token]” entfernt.

Letztendlich besteht das Ziel darin, ein Zugriffstoken für jede Power BI-REST-API-Anforderung bereitzustellen, ohne das Autorisierungstoken manuell in die Anforderung einfügen zu müssen. Um dies zu erreichen, ist eine Sitzungsvariable (aufgerufen) erforderlich temp_access_token in diesem Fall wie im Screenshot gezeigt).

image-1-9855973

Um dieses Ergebnis zu erhalten, müssen Sie zunächst eine neue Umgebung in Postman erstellen. Fügen Sie dann fünf Variablen hinzu, um die fest codierten Werte in Carls ursprünglichem Beitrag zu ersetzen. Ich habe Umgebungsvariablen verwendet, damit ich sie für mehrere Sammlungen verwenden kann, aber es würde auch funktionieren, den Bereich auf Sammlungsvariablen zu beschränken.

image-2-5169317

Im Anfragetext werden vier Variablen verwendet, um das Zugriffstoken von https://login.microsoftonline.com/common/oauth2/token abzurufen. Dies sind nur lokale Sitzungsvariablen (angeben Aktueller Wert aber tu es nein Hinzufügen vertraulicher Daten zu Ursprünglicher Wert).
1) Nutzername - Organisatorischer Power BI-Benutzer
2) Passwort - Power BI-Organisationskennwort
3) Kundenidentifikation - Ihre ID Azure Active Directory-Anwendung
4) client_secret - Geheimnis Ihrer Azure Active Directory-Anwendung

HINWEIS: Postman hat derzeit keine Möglichkeit, Variablenwerte zu schützen, auszublenden oder zu maskieren. Nachdem Sie mit Microsoft-Produkten wie Azure Key Vault gearbeitet haben, fühlen Sie sich so verwundbar, wenn Sie nur ein Kennwort in einer Variablen speichern. Für die Verwendung mit dem Grant-Typ OAuth = Kennwort sind Sitzungsvariablen jedoch ein Schritt weiter als die Codierung im Hauptteil einer Anforderung. Dies gilt insbesondere dann, wenn Sie Postman für Teams verwenden und Ihr Arbeitsbereich synchronisiert ist. Behalten Sie einfach diese Daten in Aktueller WertZumindest bleibt es lokal.

image-3-3060093

Die fünfte Variable, temp_access_tokenwird nicht wie die anderen vier manuell angegeben. Stattdessen verwenden Sie Code im Postboten Tests Registerkarte, um das Zugriffstoken in diese Variable zu schreiben. Tests Dies ist ein Bereich zum Platzieren von JavaScript-Code, der ausgeführt wird, nachdem die Anforderung aufgetreten ist.

Holen Sie sich einen Token

Die anfängliche API-Anforderung erhält das Zugriffstoken, das in nachfolgenden Aufrufen verwendet wird.

Fügen Sie eine neue hinzu Senden Anwendung https://login.microsoftonline.com/common/oauth2/token

zum Überschriften, hinzufügen:

Schlüssel = Inhaltstyp
Wert = application / x-www-form-urlencoded
image-4-3213815

zum KörperFügen Sie Folgendes hinzu, einschließlich der Variablenwerte in {{}}.

grant_type = password & username = {{username}} & password = {{password}} & client_id = {{client_id}} & client_secret = {{client_secret}} & resource = https: //analysis.windows.net/powerbi/ api
image-5-9029208

Was folgt, ist der nützlichste Teil. Der Code hier erspart Ihnen das manuelle Kopieren und Einfügen des Inhaber-Tokens in zusätzliche Anforderungen.

Im Tests, hinzufügen:

var token; Versuchen {
    var response = JSON.parse (responseBody); 
    token = response.access_token; 
    pm.environment.set ("temp_access_token", Token);
} catch (err) {console.warn (err.message); }}

Der in verwendete Code Tests analysiert die JSON-Antwort und weist die zu Zugangstoken von Microsoft an die temp_access_token Variable.

image-6-6290730

Eine erfolgreiche Anfrage zeigt das access_token und andere Daten an.

image-7-9996736

Außerdem wird das Zugriffstoken in die entsprechende Variable geschrieben.

Verwenden Sie das Token in nachfolgenden Anforderungen

Zusätzliche Anforderungen hängen davon ab, was Sie mit der Power BI-API tun möchten. Der allgemeine Schritt besteht jedoch darin, den Autorisierungsheader mit dem als Variable gespeicherten Token zu übergeben.

zum Überschriften, hinzufügen:

Schlüssel = Autorisierungswert = Inhaber {{temp_access_token}}
image-5301048

Mit dieser Einstellung kann ich beispielsweise alle Arbeitsbereichsdaten in meinem Mandanten mithilfe von erweitern Management- / Gruppenendpunkt. Ich brauche nur die dynamische Autorisierungsmethode, URL und Header. Kein manuelles Kopieren / Einfügen erforderlich.

image-8-9805417

Sie können diese Methode sogar um zusätzliche Variablen für relative Endpunkt-URLs und mehr erweitern!

Wenn Sie Fragen haben, kommentieren Sie unten und lassen Sie mich wissen, ob Sie Postman verwenden und diese Methode hilfreich finden.

[embedded] https://www.youtube.com/playlist?list=PLyWe5-Lx84g1JrDY6Zh_dfV2oO-Cy3frl&layout=gallery[/embedyt]

Zahlungslinks

Als Amazon-Mitarbeiter verdiene ich mit qualifizierten Einkäufen.