Übung: Konfigurieren einer Cacherichtlinie
Wenn Sie APIs mit Azure API Management verwalten, können Sie das Verhalten der APIs mit Richtlinien ändern, ohne Code neu schreiben zu müssen. Zum Zwischenspeichern von API-Antworten verwenden Sie die Zwischenspeicherungsrichtlinien von API Management.
Als Entwickler*in in einem Brettspielunternehmen entscheiden Sie sich, das Zwischenspeichern für eine Brettspiel-API zu implementieren. Zuerst müssen Sie die API in API Management hinzufügen. Anschließend schreiben Sie Ihre Cacherichtlinien. In dieser Übung werden Sie beides testen.
Wichtig
Sie benötigen für diese Übung ein eigenes Azure-Abonnement. Außerdem fallen möglicherweise Gebühren für Sie an. Wenn Sie noch kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Hinweis
In dieser Übung wird die „Board Gaming“-Web-API in der Domäne azurewebsites.net gehostet. Die API Management-Instanz befindet sich in der Domäne azure-api.net.
Erstellen eines Redis-Caches
In diesem Modul verwenden Sie den Verbrauchstarif für API Management. Wir verwenden ihn, da Azure die API Management-Instanzen für diesen Tarif in ungefähr einer Minute konfiguriert. Bei anderen Tarifen kann dies 30 Minuten oder länger dauern.
Der Verbrauchstarif in API Management ist für Organisationen vorgesehen, die APIs bevorzugt auf Grundlage von serverlosen Prinzipien erstellen. Außerdem gibt es bei diesem Tarif keinen internen Cache. Daher müssen wir einen externen Redis-Cache erstellen und dann die Cacherichtlinie von API Management konfigurieren, um diesen zu verwenden.
Lassen Sie uns sofort einen Cache erstellen. Dadurch kann das Setup im Hintergrund ausgeführt werden, während wir an anderen Dingen arbeiten:
Melden Sie sich beim Azure-Portal an.
Wählen Sie im Menü Ressource des Azure-Portals oder auf der Startseite die Option Ressource erstellen aus. Der Bereich Ressource erstellen wird angezeigt.
Klicken Sie im Menü Ressource erstellen auf Datenbanken, suchen Sie nach Azure Cache for Redis, und wählen Sie diese Option dann aus. Klicken Sie auf Erstellen. Der Bereich Neuer Redis Cache wird angezeigt.
Füllen Sie auf der Registerkarte Grundlagen die folgenden Werte für jede Einstellung aus.
Einstellung Wert Projektdetails Subscription Wählen Sie Ihr Abonnement aus. Resource group Wählen Sie eine neue oder vorhandene Ressourcengruppe aus. Eine Ressourcengruppe ist ein logischer Container, der zu einer Azure-Lösung gehörige Ressourcen enthält. Instanzendetails DNS-Name Geben Sie einen eindeutigen Namen ein. Notieren Sie sich den Namen. Sie benötigen ihn später. Ort Wählen Sie eine verfügbare Region aus. Cachetyp Standard C1 Klicken Sie auf Überprüfen + erstellen, um Ihre Eingabe zu überprüfen, und klicken Sie dann auf Erstellen.
Erstellen einer Web-API in Azure App Service
Um eine Azure App Service-Web-API zu erstellen, führen wir die folgenden Schritte aus:
Wählen Sie in der Azure-Taskleiste das Cloud Shell-Symbol aus, um Azure Cloud Shell zu öffnen.
Klonen Sie die Beispiel-Web-API, indem Sie den folgenden Befehl ausführen:
git clone https://github.com/MicrosoftDocs/mslearn-improve-api-performance-with-apim-caching-policy.git
Richten Sie die Web-API ein, indem Sie diese Befehle ausführen:
cd mslearn-improve-api-performance-with-apim-caching-policy bash setup.sh
Setup.sh verfügt über sieben Teile, deren Ausführung einige Minuten dauert. Wenn die Ausführung abgeschlossen ist, werden drei URLs angezeigt:
- Eine Test-URL für die Web-API, mit der die Web-API getestet werden kann
- Eine Swagger-URL für die Swagger-Benutzeroberfläche
- Eine Swagger-JSON-URL für die OpenAPI-Definition
Notieren Sie sich diese URLs. Sie benötigen sie in der nächsten Aufgabe.
Testen der gerade bereitgestellten Web-API
Wenn die Web-API erfolgreich in Cloud Shell erstellt wurde, können Sie sie testen. Testen Sie sie, indem Sie im Browser eine GET-Anforderung senden oder die OpenAPI-Definition überprüfen. Dieser Test wird in der Domäne azurewebsites.net für die Web-API ausgeführt, bevor sie zu API Management hinzugefügt wird.
Wählen Sie im Menü Ressource des Azure-Portals oder auf der Startseite die Option Alle Ressourcen aus. Wählen Sie dann die App Service-Ressource aus. Der App Service-Bereich BoardGamingAPI123aa456789 wird angezeigt. Die Zahlen am Ende unterscheiden sich bei Ihrer Implementierung.
Wählen Sie in der Befehlsleiste der Registerkarte Übersicht die Option Durchsuchen aus. Beachten Sie die Fehlermeldung. Im Browser wird die Nachricht „No webpage found for this address“ (Für diese Adresse wurde keine Webseite gefunden) angezeigt. Das liegt daran, dass die Web-API keine Webbenutzeroberfläche implementiert.
Fügen Sie auf einer neuen Browserregisterkarte die zuvor kopierte Test-URL für die Web-API ein, und wählen Sie die EINGABETASTE aus. Im Browser wird eine Antwort im JSON-Format angezeigt. Beachten Sie, dass das Ergebnis die Serverzeit mit der Bezeichnung quotePreparedTime enthält.
Geben Sie auf der zweiten Browserregisterkarte die zuvor kopierte Swagger-URL ein, und wählen Sie die EINGABETASTE aus. Im Browser wird die Swagger-Seite für die Board Gaming-APIangezeigt. Lassen Sie diese Browserregisterkarte für spätere Schritte geöffnet.
Fügen Sie auf einer dritten Browserregisterkarte die Swagger-JSON-URL ein, die Sie zuvor kopiert haben. Im Browser wird die OpenAPI-Spezifikation im JSON-Format angezeigt.
Schließen Sie die Registerkarten nicht. Sie benötigen sie später.
Erstellen einer neuen API Management-Instanz
Da wir nun über eine funktionsfähige API verfügen, können wir API Management einrichten:
Wählen Sie im Menü Ressource des Azure-Portals oder auf der Startseite die Option Ressource erstellen aus. Der Bereich Ressource erstellen wird angezeigt.
Klicken Sie im Menü Ressource erstellen auf Integration, und wählen Sie in der Ergebnisliste API Management aus. Der Bereich API Management-Dienst erstellen wird angezeigt.
Geben Sie auf der Registerkarte Grundlagen die folgenden Werte für die jeweilige Einstellung ein.
Einstellung Wert Projektdetails Subscription Wählen Sie Ihr Abonnement aus. Resource group Wählen Sie eine neue oder vorhandene Ressourcengruppe aus. Eine Ressourcengruppe ist ein logischer Container, der zu einer Azure-Lösung gehörige Ressourcen enthält. Instanzendetails Region Wählen Sie den Speicherort aus, den Sie auch für Redis Cache verwendet haben. Ressourcenname Wählen Sie einen eindeutigen Namen aus. Notieren Sie sich den Namen. Sie benötigen ihn später. Organisationsname BoardGames Administrator-E-Mail-Adresse Die E-Mail-Adresse zum Empfangen aller Systembenachrichtigungen. Preisstufe Tarif Verbrauch Klicken Sie auf Überprüfen + erstellen, um Ihre Eingabe zu überprüfen, und klicken Sie dann auf Erstellen.
Konfigurieren von API Management zum Verwenden eines externen Caches
Sie können die API Management-Instanz nur so konfigurieren, dass Ihr Redis-Cache als externer Cache verwendet wird, wenn die Bereitstellung des Redis-Caches abgeschlossen ist.
Wählen Sie im Menü Ressource des Azure-Portals oder auf der Startseite die Option Alle Ressourcen aus. Wählen Sie den Ressourcentyp Azure Cache for Redis aus. Der Bereich Azure Cache for Redis wird angezeigt.
Im Abschnitt Übersicht des Bereichs sollte der Ressourcenstatus Wird ausgeführt angezeigt werden. Überprüfen Sie den Status weiterhin, indem Sie alle paar Minuten auf den Link Aktualisieren klicken. Fahren Sie nur fort, wenn die Bereitstellung des Redis-Caches ausgeführt wird.
Wählen Sie im Menü Azure Cache for Redis im Abschnitt Einstellungen des linken Bereichs die Option Zugriffsschlüssel aus. Der Bereich Zugriffsschlüssel wird für die gerade von Ihnen erstellte Instanz von Azure Cache for Redis angezeigt.
Klicken Sie in der rechten Ecke des Felds Primäre Verbindungszeichenfolge (StackExchange.Redis) auf das Symbol In Zwischenablage kopieren.
Wählen Sie im Bereich Alle Ressourcen die API Management-Dienstressource aus, die Sie zuvor erstellt haben. Der Bereich API Management-Dienst wird angezeigt.
Wählen Sie im Menü API Management-Dienst in Deployment + Infrastructure (Bereitstellung und Infrastruktur) im linken Navigationsbereich die Option Externer Cache aus. Der Bereich Externer Cache für Ihren API Management-Dienst wird angezeigt.
Wählen Sie auf der Befehlsleiste + Hinzufügen aus. Der Bereich Externer Cache für Ihren API Management-Dienst wird angezeigt.
Wählen Sie in der Dropdownliste Cacheinstanz die Option Benutzerdefiniert aus. Wählen Sie anschließend im Feld Verwenden aus den Ort aus, den Sie für die API Management-Instanz verwendet haben.
Fügen Sie im Feld Verbindungszeichenfolge die primäre Verbindungszeichenfolge ein, die Sie kopiert haben. Wählen Sie dann in der Befehlsleiste Speichern aus.
Der gerade von Ihnen erstellte externe Cache wird jetzt auf der Seite Externer Cache für Ihren API Management-Dienst aufgeführt.
Hinzufügen der API zu API Management
Sie müssen eine Richtlinie anwenden, um Benutzer*innen den Zugriff auf die API zu ermöglichen. Bevor Sie eine Richtlinie anwenden können, müssen Sie die API jedoch der API Management-Instanz hinzufügen.
Wählen Sie im Menü des Azure-Portals oder auf der Startseite die Option Alle Ressourcen aus. Wählen Sie dann den zuvor erstellten API Management-Dienst aus.
Wählen Sie im Menü API die Option APIs aus. Der Bereich APIs für Ihren API Management-Dienst wird angezeigt. Dort gibt es zahlreiche Vorlagen, die Sie verwenden können.
Wählen Sie im Abschnitt Create from definition (Aus Definition erstellen) die Option OpenAPI aus. Das Dialogfeld Aus OpenAPI-Spezifikation erstellen wird angezeigt.
Fügen Sie im Feld OpenAPI-Spezifikation die Swagger-JSON-URL ein, die Sie zuvor kopiert haben.
Wählen Sie Erstellen aus. Der Bereich APIs für Ihren API Management-Dienst wird erneut angezeigt. Darin werden alle verfügbaren API-Vorgänge für diese Verwaltungsinstanz aufgeführt.
Testen der API in API Management
Die API wird jetzt der API Management-Instanz hinzugefügt. Testen wir, wie die API funktioniert, bevor die Richtlinien angewendet werden.
Wählen Sie im Bereich APIs für Ihren API Management-Dienst die Registerkarte Testen und dann den Vorgang GET – GetPriceEstimate aus. Der Bereich GetPriceEstimate wird angezeigt.
Geben Sie die folgenden Werte als Vorlagenparameter und Abfrageparameter ein.
NAME WERT ShippingCode usa Game chess Height 8 Width 8 Wählen Sie Send (Senden) aus.
Überprüfen Sie die Ergebnisse. Beachten Sie, dass die genaue Zeitangabe (
quotePreparedTime
) in der Nutzlast der HTTP-Antwort enthalten ist.Wählen Sie Senden aus, um die Anforderung zu wiederholen. Sie sehen, dass sich die Zeitangabe in der Nutzlast der HTTP-Antwort geändert hat.
Hinzufügen einer Cacherichtlinie
Wir können jetzt die Zwischenspeicherung aktivieren, indem wir Richtlinien für das Zwischenspeichern von Antworten hinzufügen.
Wählen Sie Ihren API Management-Dienst aus, und wählen Sie dann den Link APIs aus. Wählen Sie als Nächstes die Registerkarte Entwurf aus, und wählen Sie den Vorgang GET – GetPriceEstimate aus. Der Bereich GetPriceEstimate wird angezeigt.
Klicken Sie im Abschnitt Eingehende Verarbeitung auf Richtlinie hinzufügen. Der Bereich Add inbound policy (Eingehende Richtlinie hinzufügen) wird angezeigt.
Klicken Sie auf Cache responses (Cacheantworten). Der Bereich Eingehende Verarbeitung wird erneut angezeigt.
Geben Sie unter Cache responses (Cacheantworten) im Feld Dauer in Sekunden600 ein. Klicken Sie dann auf Speichern.
Wählen Sie im Abschnitt Inbound processing (Eingehende Verarbeitung) die Option </> aus. Der Richtlinien-XML-Editor wird angezeigt.
Beachten Sie, dass dem Abschnitt
<inbound>
ein<cache-lookup>
-Tag hinzugefügt wurde. Dem Abschnitt<outbound>
wurde auch ein<cache-store>
-Tag hinzugefügt.Klicken Sie auf Speichern.
Testen des Caches
Wir führen denselben Test mit der API wie im vorherigen Abschnitt aus, und zwar in API Management. Anschließend überprüfen wir die Ergebnisse.
Wählen Sie im Bereich APIs für Ihren API Management-Dienst die Registerkarte Testen aus. Wählen Sie dann den Vorgang GET – GetPriceEstimate aus. Der Bereich GetPriceEstimate wird angezeigt.
Geben Sie die folgenden Werte als Vorlagenparameter und Abfrageparameter ein.
NAME WERT ShippingCode usa Game chess Height 8 Width 8 Wählen Sie Send (Senden) aus.
Überprüfen Sie die Ergebnisse. Beachten Sie, dass die genaue Zeitangabe (
quotePreparedTime
) in der Nutzlast der HTTP-Antwort enthalten ist.Wählen Sie Senden aus, um die Anforderung zu wiederholen. Beachten Sie, dass der
quotePreparedTime
-Wert in der Antwort immer noch derselbe ist. Das liegt daran, dass eine zwischengespeicherte Antwort bereitgestellt wird.
Konfigurieren des Caches, sodass die Ergebnisse abhängig von den Abfrageparametern variieren
Der Cache muss so konfiguriert werden, dass eindeutige Preise auf Grundlage des Abfrageparameters Höhe angegeben werden können. Die Breite des Bretts wird nicht zum Berechnen der Kosten verwendet, weshalb sie nicht konfiguriert wird.
Wählen Sie im Bereich APIs für Ihren API Management-Dienst die Registerkarte Entwurf aus. Wählen Sie dann den Vorgang GET – GetPriceEstimate aus. Der Bereich GetPriceEstimate wird angezeigt.
Wählen Sie im Abschnitt Eingehende Verarbeitung die Option </> aus, um den Richtliniencode zu bearbeiten.
Ersetzen Sie das gesamte
<cache-lookup>
-Tag durch die folgende XML-Datei:<cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="none"> <vary-by-query-parameter>height</vary-by-query-parameter> </cache-lookup>
Wählen Sie Speichern aus.
Testen der neuen Cachekonfiguration
Der Cache sollte jetzt eindeutige Antworten liefern, die auf dem Abfrageparameter Höhe basieren. Da der Parameter Breite den Preis nicht beeinflusst, wird eine zwischengespeicherte Antwort auch dann verwendet, wenn sich die Breite ändert. Lassen Sie uns das testen:
Wählen Sie im Bereich APIs für Ihren API Management-Dienst die Registerkarte Testen aus. Wählen Sie dann den Vorgang GET – GetPriceEstimate aus. Der Bereich GetPriceEstimate wird angezeigt.
Geben Sie die folgenden Werte als Vorlagenparameter und Abfrageparameter ein.
NAME WERT ShippingCode usa Game chess Height 8 Width 8 Wählen Sie Send (Senden) aus.
Überprüfen Sie die Ergebnisse. Beachten Sie, dass
quotePreparedTime
in der Antwort enthalten ist.Wählen Sie Senden aus, um die Anforderung zu wiederholen. Beachten Sie, dass sich der Zeitwert in der Antwort wie zuvor nicht geändert hat. Das liegt daran, dass eine zwischengespeicherte Antwort angegeben wurde.
Verwenden Sie zum Testen des Parameters Höhe die folgenden Werte als Vorlagenparameter und Abfrageparameter.
NAME WERT ShippingCode usa Game chess Height 100 Width 8 Wählen Sie Send (Senden) aus.
Überprüfen Sie das Ergebnis. Dieses Mal wird das Ergebnis aktualisiert und geändert. Ein Cache wurde nicht verwendet, da der Abfrageparameter Höhe in der Anforderung geändert wurde. Die Antwort ist für unsere API richtig.
Testen wir den Parameter Breite. Geben Sie die folgenden Werte als Vorlagenparameter und Abfrageparameter ein.
NAME WERT ShippingCode usa Game chess Height 100 Width 500 Wählen Sie Send (Senden) aus.
Überprüfen Sie das Ergebnis. Dieses Mal ändert sich das Ergebnis nicht, obwohl der Abfrageparameter Breite anders ist. Das liegt daran, dass eine zwischengespeicherte Antwort bereitgestellt wird.