Übung: Konfigurieren einer Cacherichtlinie

Abgeschlossen

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:

  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie im Menü Ressource des Azure-Portals oder auf der Startseite die Option Ressource erstellen aus. Der Bereich Ressource erstellen wird angezeigt.

  3. 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.

  4. 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

    Screenshot that shows the form that's used to create a new Redis cache.

  5. 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:

  1. Wählen Sie in der Azure-Taskleiste das Cloud Shell-Symbol aus, um Azure Cloud Shell zu öffnen.

    Screenshot of Cloud Shell icon in taskbar.

  2. 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
    
  3. 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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:

  1. Wählen Sie im Menü Ressource des Azure-Portals oder auf der Startseite die Option Ressource erstellen aus. Der Bereich Ressource erstellen wird angezeigt.

  2. 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.

  3. 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
  4. 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.

  1. 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.

  2. 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.

  3. 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.

  4. Klicken Sie in der rechten Ecke des Felds Primäre Verbindungszeichenfolge (StackExchange.Redis) auf das Symbol In Zwischenablage kopieren.

    Screenshot that shows how to obtain the Redis cache connection string.

  5. Wählen Sie im Bereich Alle Ressourcen die API Management-Dienstressource aus, die Sie zuvor erstellt haben. Der Bereich API Management-Dienst wird angezeigt.

  6. 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.

  7. Wählen Sie auf der Befehlsleiste + Hinzufügen aus. Der Bereich Externer Cache für Ihren API Management-Dienst wird angezeigt.

  8. 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.

  9. Fügen Sie im Feld Verbindungszeichenfolge die primäre Verbindungszeichenfolge ein, die Sie kopiert haben. Wählen Sie dann in der Befehlsleiste Speichern aus.

    Screenshot that shows how to configure the external cache.

    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.

  1. 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.

  2. 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.

  3. Wählen Sie im Abschnitt Create from definition (Aus Definition erstellen) die Option OpenAPI aus. Das Dialogfeld Aus OpenAPI-Spezifikation erstellen wird angezeigt.

    Screenshot that shows how to add an API to API Management in the portal.

  4. Fügen Sie im Feld OpenAPI-Spezifikation die Swagger-JSON-URL ein, die Sie zuvor kopiert haben.

    Screenshot that shows how to configure an OpenAPI specification in the portal.

  5. 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.

  1. 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.

  2. Geben Sie die folgenden Werte als Vorlagenparameter und Abfrageparameter ein.

    NAME WERT
    ShippingCode usa
    Game chess
    Height 8
    Width 8
  3. Wählen Sie Send (Senden) aus.

    Screenshot that shows how to test the API in API Management.

  4. Überprüfen Sie die Ergebnisse. Beachten Sie, dass die genaue Zeitangabe (quotePreparedTime) in der Nutzlast der HTTP-Antwort enthalten ist.

    Screenshot that shows the timestamp of the payload in the test console.

  5. 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.

  1. 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.

  2. Klicken Sie im Abschnitt Eingehende Verarbeitung auf Richtlinie hinzufügen. Der Bereich Add inbound policy (Eingehende Richtlinie hinzufügen) wird angezeigt.

    Screenshot that shows how to add a caching policy.

  3. Klicken Sie auf Cache responses (Cacheantworten). Der Bereich Eingehende Verarbeitung wird erneut angezeigt.

  4. Geben Sie unter Cache responses (Cacheantworten) im Feld Dauer in Sekunden600 ein. Klicken Sie dann auf Speichern.

  5. Wählen Sie im Abschnitt Inbound processing (Eingehende Verarbeitung) die Option </> aus. Der Richtlinien-XML-Editor wird angezeigt.

  6. Beachten Sie, dass dem Abschnitt <inbound> ein <cache-lookup>-Tag hinzugefügt wurde. Dem Abschnitt <outbound> wurde auch ein <cache-store>-Tag hinzugefügt.

    Screenshot that shows a policy editor with caching policies.

  7. 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.

  1. 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.

  2. Geben Sie die folgenden Werte als Vorlagenparameter und Abfrageparameter ein.

    NAME WERT
    ShippingCode usa
    Game chess
    Height 8
    Width 8

    Screenshot that shows how to test the API in API Management.

  3. Wählen Sie Send (Senden) aus.

  4. Überprüfen Sie die Ergebnisse. Beachten Sie, dass die genaue Zeitangabe (quotePreparedTime) in der Nutzlast der HTTP-Antwort enthalten ist.

  5. 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.

  1. 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.

  2. Wählen Sie im Abschnitt Eingehende Verarbeitung die Option </> aus, um den Richtliniencode zu bearbeiten.

  3. 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>
    
  4. 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:

  1. 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.

  2. Geben Sie die folgenden Werte als Vorlagenparameter und Abfrageparameter ein.

    NAME WERT
    ShippingCode usa
    Game chess
    Height 8
    Width 8
  3. Wählen Sie Send (Senden) aus.

  4. Überprüfen Sie die Ergebnisse. Beachten Sie, dass quotePreparedTime in der Antwort enthalten ist.

    Screenshot that shows the timestamp of the payload in the test console.

  5. 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.

  6. 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
  7. Wählen Sie Send (Senden) aus.

  8. Ü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.

  9. 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
  10. Wählen Sie Send (Senden) aus.

  11. Ü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.