Übung: Hinzufügen einer weiteren Azure Functions-App zu einer vorhandenen API
Denken Sie daran, dass Sie alle separaten Microservices, die Azure Functions-Instanzen sind, in eine einzelne API integrieren möchten. Sie haben die Funktions-App „Products“ einer neuen API Management-Instanz hinzugefügt. Nun möchten Sie dieser API eine weitere Funktions-App hinzufügen.
In dieser Übung fügen Sie der API die Funktions-App „Orders“ hinzu und testen das integrierte System mit dem Tool curl
.
Testen der Funktion „OrderDetails“
Bevor Sie die Funktions-App „Orders“ zur API hinzufügen, testen Sie die Funktion „OrderDetails“, die sie hostet.
Wählen Sie im Menü „Azure-Ressource“ oder auf der Startseite die Option Alle Ressourcen aus. Der Bereich Alle Ressourcen wird angezeigt.
Sortieren Sie die Ressource nach Typ, und wählen Sie dann die Funktions-App aus, deren Name mit OrderFunction beginnt. Der Bereich „Übersicht“ für die Funktions-App „OrderFunction“ wird angezeigt.
Wählen Sie OrderDetails (Bestelldetails) in der Liste der Funktionen für Ihre Funktions-App aus. Der Bereich „Übersicht“ für die Funktion OrderDetails wird angezeigt.
Wählen Sie im Menü „OrderDetails“ unter Entwickler die Option Code + Test aus. Der Bereich Code + Test für die Funktion „OrderDetails“ wird mit dem Inhalt der Datei
function.json
angezeigt.Wählen Sie in der Befehlsleiste Test/Run aus. Die Registerkarte für den Parameter Eingabe für Ihre „OrderDetails“-Funktion wird angezeigt.
Wählen Sie im Feld HTTP-MethodeGET aus der Dropdownliste aus, und wählen Sie dann unter Abfrage die Option Parameter hinzufügen aus. Geben Sie dann im Feld Namename und im Feld WertChiba ein (im Feld „Wert“ wird die Groß-/Kleinschreibung beachtet). Wählen Sie dann Ausführen aus.
Eine Protokollkonsole wird geöffnet und der Status der Anforderung angezeigt. Auf der Registerkarte Ausgabe wird der HTTP-Antwortcode und -Inhalt im JSON-Format angezeigt.
Optional können Sie zusätzliche Anforderungen ausführen, indem Sie die Werte Henri und Barriclough verwenden, um unterschiedliche Kundenaufträge zu erhalten.
Wählen Sie Schließen aus, um die Tabs „Eingabe“ und „Ausgabe“ für „Test/Run“ zu schließen.
Wählen Sie auf der Befehlsleiste des Bereichs „OrderDetails“ die Option Funktions-URL abrufen aus. Beachten Sie, dass die URL der Name der Funktion innerhalb der Domäne azurewebsites.net ist.
Hinzufügen einer Funktion zu einer vorhandenen API
In diesem Schritt fügen wir die Funktion „Order“ der API Management-Ressource hinzu, die wir in der vorherigen Übung erstellt haben. In dieser Übung haben wir die API Management-Oberfläche auf der Benutzeroberfläche der Funktions-App verwendet. Hier navigieren Sie durch das Ressourcenmenü im Azure-Portal zu Ihrer API Management-Instanz, nur um zu zeigen, dass beide Ansätze verfügbar sind.
Wählen Sie im Menü „Azure-Ressource“ oder auf der Startseite die Option Alle Ressourcen aus. Der Bereich Alle Ressourcen wird angezeigt.
Sortieren Sie die Ressourcen nach Typ, und wählen Sie dann den API Management-Dienst OnlineStore aus. Der API Management-Dienst für OnlineStore wird angezeigt.
Wählen Sie im Menü unter APIs die Option APIs aus. Im Bereich „APIs“ werden Optionen zum Definieren einer neuen API angezeigt.
Wählen Sie unter Aus Azure-Ressource erstellen die Option Funktions-App aus.
Das Dialogfeld Aus Funktions-App erstellen wird angezeigt.
Wählen Sie Durchsuchen aus, um Ihre Funktions-App auszuwählen. Der Bereich Azure-Funktionen importieren wird angezeigt.
Wählen Sie im Feld Erforderliche Einstellungen konfigurieren die Option Auswählen aus.
(../media/5-import-azure-function-app-03-expanded.png#lightbox)
Der Bereich Azure-Funktions-App auswählen wird angezeigt.
Wählen Sie OrderFunctionNNNNNNN und dann Auswählen aus. Der Bereich Azure-Funktionen importieren wird erneut mit der konfigurierten „OrderDetails“-Funktions-App angezeigt.
Stellen Sie sicher, dass OrderDetails ausgewählt ist, und wählen Sie dann unten auf der Seite Auswählen aus, um die Funktion hinzuzufügen. Das Dialogfeld Aus Funktions-App erstellen wird angezeigt.
Ersetzen Sie den Wert im Feld API-URL-Suffix mit orders. Beachten Sie, wie diese Änderung die Basis-URL aktualisiert. Wählen Sie Erstellen aus, um Ihre API zu erstellen.
Der API Management-Dienst „OnlineStore“ zeigt die Registerkarte Entwurf mit allen für „OrderDetails“ verfügbaren APIs (GET, POST) an.
Testen des Endpunkts für OnlineStore-Bestellungen im Portal
Nachdem Sie „OrderDetails“ zu unserer API hinzugefügt haben, sollten Sie diese mithilfe der API Management-Tools im Azure-Portal testen.
Wählen Sie auf der Registerkarte für den Entwurf von „OrderFunctionNNNNNN“-APIs unter All operations (Alle Vorgänge) GET OrderDetails aus, und wählen Sie dann die Registerkarte Testen aus.
Wählen Sie im Abschnitt Abfrageparameter die Option Parameter hinzufügen aus, und geben Sie im Feld Namename und im Feld WertChiba ein. Wählen Sie Send (Senden) aus.
In der Registerkarte HTTP-Antwort für Nachrichten wird angezeigt, dass die http-Anforderung erfolgreich war (HTTP/1.1/ 200 OK). Außerdem wird ein JSON-Objekt mit einer Bestell-ID zusammen mit dem Kundennamen, dem Gesamtpreis der Bestellung und dem Versandstatus angezeigt.
Scrollen Sie nach oben zum Abschnitt HTTP-Anforderung. Beachten Sie, dass die Anforderung an eine Unterdomäne und ein Unterverzeichnis in der Domäne azure-api.net gesendet wurde. Dieser Speicherort unterscheidet sich von der Hostdomäne azurewebsites.net.
Testen der kombinierten API
Wir können mit dem Befehlszeilentool curl
Anforderungen an unsere API senden. cURL ist dafür perfekt geeignet, da Sie den richtigen Abonnementschlüssel in eine Anforderung einschließen können. Eine Anforderung benötigt auch den Speicherort der API, der in Azure API Management gehostet wird und in diesem Falls aus den Funktionen „Products“ und „Orders“ besteht.
Wählen Sie im Azure-Ressourcenmenü oder auf „Startseite“ die Option Alle Ressourcen aus.
Sortieren Sie die Ressourcen nach Typ, und wählen Sie dann den API Management-Dienst OnlineStore aus. Der API Management-Dienst für OnlineStore wird angezeigt.
Zeigen Sie im Abschnitt Essentials auf die Gateway-URL, und wählen Sie das Symbol In Zwischenablage kopieren aus.
Definieren Sie in Azure Cloud Shell auf der rechten Seite einige Variablen. Führen Sie den folgenden Befehl aus, und ersetzen Sie dabei den Platzhalter
<paste URL here>
durch den URL-Wert, den Sie in die Zwischenablage kopiert haben, und drücken Sie dann die Eingabetaste. Dieser Wert definiert die Gatewayvariable.GATEWAY_URL=<paste URL here>
Scrollen Sie in Azure im Menü „OnlineStore“ des API Management-Diensts nach unten zu API und wählen Sie Abonnements aus. Der Bereich Abonnements wird für Ihre API Management-Instanz „OnlineStore“ angezeigt.
Wählen Sie für das Built-in all-access subscription (Integriertes Vollzugriffsabonnement) die Auslassungspunkte … ganz rechts in der Zeile aus, und wählen Sie dann im Kontextmenü Show/hide keys (Schlüssel anzeigen/ausblenden) aus. Der Primärschlüssel und der sekundäre Schlüssel für die API werden angezeigt.
Wählen Sie im Feld Primärschlüssel das Symbol In Zwischenablage kopieren aus.
Führen Sie in Cloud Shell den folgenden Befehl aus. Ersetzen Sie dabei den Platzhalter mit dem Wert in Ihrer Zwischenablage zu ersetzen, und drücken Sie dann die EINGABETASTE.
SUB_KEY=<paste key here>
Jetzt können Sie Details zu einer Bestellung und einem Produkt anfordern, indem Sie den gleichen API Management-Dienst abfragen:
Führen Sie den folgenden Befehl in Cloud Shell aus, um Details für einen Kunden mit dem Namen Henri anzufordern:
curl -X GET "$GATEWAY_URL/orders/OrderDetails?name=Henri" -H "Ocp-Apim-Subscription-Key:$SUB_KEY"
Die Antwort enthält einen JSON-Codeblock mit Auftragsdetails, die zeigen, dass der Auftrag 56224 an Pascale Henri versendet wurde. Sie können den Befehl auch mit den Namen Chiba und Barriclough probieren, um unterschiedliche Ergebnisse zu erhalten.
Führen Sie den folgenden Befehl in Cloud Shell aus, um die Details eines Produkts mit der ID2 anzufordern.
curl -X GET "$GATEWAY_URL/products/ProductDetails?id=2" -H "Ocp-Apim-Subscription-Key:$SUB_KEY"
Die Antwort enthält einen JSON-Codeblock mit den Details eines Produkts. Sie können den Befehl auch mit den ID-Werten 1 und 3 probieren, um unterschiedliche Ergebnisse zu erhalten.
Beachten Sie, dass beide Funktionen nun über Endpunkte innerhalb der Domäne azure-api.net (wie von der GATEWAY_URL definiert) aufgerufen werden können. Diese ist die Domäne, die von Azure API Management verwendet wird. In weiteren Lernmodulen erfahren Sie, wie Sie Richtlinien, Sicherheitseinstellungen, externe Caches und andere Features den Funktionen in einem API Management-Gateway zuweisen können. Ein Gateway bietet Ihnen einen Kontrollpunkt, in dem Sie mehrere Microservices verwalten können, ohne deren Code zu ändern.