Övning – Konfigurera en cachelagringsprincip

Slutförd

När du hanterar API:er med Azure API Management kan du ändra API-beteendet utan att behöva skriva om kod med hjälp av principer. Om du vill cachelagra API-svar använder du API Managements cachelagringsprinciper.

Som utvecklare för ett brädspelsföretag bestämmer du dig för att implementera cachelagring för ett Board Gaming-API. Först måste du lägga till API:et i API Management. Sedan skriver du dina cachelagringsprinciper. Vi gör båda i den här övningen.

Viktigt!

Du behöver en egen Azure-prenumeration för att utföra den här övningen, och avgifter kan tillkomma. Om du inte redan har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

Kommentar

I den här övningen värdhanteras webb-API:et Board Gaming i domänen azurewebsites.net. API Management-instansen är i domänen azure-api.net.

Skapa en Redis Cache

Vi använder förbrukningsnivån för API Management för den här modulen. Det beror på att Azure konfigurerar API Management-instanser för den här nivån på bara en minut eller så. Andra nivåer kan ta upp till 30 minuter eller längre.

Förbrukningsnivån i API Management är avsedd för organisationer som föredrar att skapa API:er på serverlösa principer. Det är en nivå som inte har någon intern cache. Därför måste vi skapa en extern Redis-cache och sedan konfigurera en cachelagringsprincip för API Management så att den används.

Nu ska vi skapa en cache direkt. Detta gör att installationen kan köras i bakgrunden medan vi arbetar med andra steg:

  1. Logga in på Azure-portalen.

  2. På menyn Resurs i Azure-portalen eller på sidan Start väljer du Skapa en resurs. Fönstret Skapa en resurs visas.

  3. I menyn Skapa en resurs väljer du Databaser och söker sedan efter och väljer Azure Cache for Redis. Välj Skapa. Fönstret New Redis Cache (Ny Redis Cache ) visas.

  4. På fliken Grundläggande anger du följande värden för varje inställning.

    Inställning Värde
    Projektinformation
    Prenumeration Välj din prenumeration.
    Resursgrupp Välj en ny eller befintlig resursgrupp. En resursgrupp är en logisk container som innehåller relaterade resurser för en Azure-lösning.
    Instansinformation
    DNS-namn Ange ett unikt namn. Anteckna det. Du behöver det senare.
    Location Välj en tillgänglig region.
    Cachetyp Standard C1

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

  5. Välj Granska + skapa för att verifiera dina indata och välj sedan Skapa.

Skapa ett webb-API i Azure App Service

För att skapa ett Azure App Service-webb-API använder vi följande steg:

  1. I Aktivitetsfältet i Azure väljer du Cloud Shell-ikonen för att öppna Azure Cloud Shell.

    Screenshot of Cloud Shell icon in taskbar.

  2. Klona exempelwebb-API:et genom att köra följande kommando:

    git clone https://github.com/MicrosoftDocs/mslearn-improve-api-performance-with-apim-caching-policy.git
    
  3. Konfigurera webb-API:et genom att köra följande kommandon:

    cd mslearn-improve-api-performance-with-apim-caching-policy
    bash setup.sh
    

Setup.sh har sju delar som tar flera minuter att köra. När den är klar visas tre URL:er:

  • En webb-API-test-URL för att testa webb-API:et
  • En Swagger-URL för Swagger-användargränssnittet
  • En Swagger JSON-URL för OpenAPI-definitionen

Anteckna dessa URL:er. Vi använder dem i nästa uppgift.

Testa det nyligen distribuerade webb-API:et

När webb-API:et har skapats i Cloud Shell kan du testa det. Kör ett test genom att skicka en GET-begäran i webbläsaren eller genom att kontrollera OpenAPI-definitionen. Det här testet körs mot webb-API:et i den azurewebsites.net domänen innan det läggs till i API Management.

  1. På menyn Resurs i Azure-portalen eller på sidan Start väljer du Alla resurser. Välj sedan App Service-resursen. Fönstret BoardGamingAPI123aa456789 App Service visas. Siffrorna i slutet skiljer sig åt för implementeringen.

  2. I kommandofältet på fliken Översikt väljer du Bläddra som ett test. Observera felmeddelandet. Webbläsaren visar meddelandet "Ingen webbsida hittades för den här adressen". Detta beror på att webb-API:et inte implementerar ett webbanvändargränssnitt.

  3. På en ny webbläsarflik klistrar du in webb-API-test-URL:en som du tidigare kopierade och väljer Retur. Webbläsaren visar ett svar i JSON-format. Observera att resultatet inkluderar servertiden med etikettcitatenPreparedTime.

  4. På en andra webbläsarflik klistrar du in swagger-URL:en som du kopierade tidigare och väljer sedan Retur. Webbläsaren visar Swagger-sidan för ditt Board Gaming-API. Håll den här webbläsarfliken öppen för senare användning.

  5. På en tredje webbläsarflik klistrar du in Swagger JSON-URL:en som du kopierade tidigare. Webbläsaren visar OpenAPI-specifikationen i JSON-format.

Låt flikarna vara öppna. De kommer att vara praktiska senare.

Skapa en ny API Management-instans

Nu när vi har ett fungerande API konfigurerar vi API Management:

  1. På menyn Resurs i Azure-portalen eller på sidan Start väljer du Skapa en resurs. Fönstret Skapa en resurs visas.

  2. I menyn Skapa en resurs väljer du Integrering och sedan API Management i resultatlistan. Fönstret Skapa API Management-tjänst visas.

  3. Ange följande värden för varje inställning på fliken Grundläggande .

    Inställning Värde
    Projektinformation
    Prenumeration Välj din prenumeration.
    Resursgrupp Välj en ny eller befintlig resursgrupp. En resursgrupp är en logisk container som innehåller relaterade resurser för en Azure-lösning.
    Instansinformation
    Region Välj samma plats som du använde för Redis-cachen.
    Resursnamn Välj ett unikt namn. Anteckna det. Du behöver det senare.
    Organisationsnamn BoardGames
    E-postadress för administratör E-postadressen för att ta emot alla systemaviseringar.
    Prisnivå
    Prisnivå Förbrukning
  4. Välj Granska + skapa för att verifiera dina indata och välj sedan Skapa.

Konfigurera API Management för att använda en extern cache

Du kan konfigurera API Management-instansen så att redis-cachen endast används som extern cache när Redis-cachen är helt distribuerad.

  1. På menyn Resurs i Azure-portalen eller på sidan Start väljer du Alla resurser. Välj sedan resurstypen Azure Cache for Redis . Ett Azure Cache for Redis-fönster visas.

  2. I avsnittet Översikt i fönstret bör du se resursstatusen som Körs. Om den inte är det fortsätter du att kontrollera statusen med några minuters mellanrum genom att klicka på länken Uppdatera . Fortsätt endast när redis-cachedistributionen körs.

  3. I menyn Azure Cache for Redis går du till avsnittet Inställningar i den vänstra rutan och väljer Åtkomstnycklar. Fönstret Åtkomstnycklar visas för Azure Cache for Redis-instansen som du nyss skapade.

  4. I det högra hörnet av rutan Primär anslutningssträng (StackExchange.Redis) väljer du ikonen Kopiera till Urklipp.

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

  5. I fönstret Alla resurser väljer du samma API Management-tjänstresurs som du skapade tidigare. Fönstret API Management-tjänst visas.

  6. Välj Extern cache i Distribution + infrastruktur i det vänstra navigeringsfönstret på MENYN API Management-tjänst. Fönstret Extern cache för API Management-tjänsten visas.

  7. Välj + Lägg till i kommandofältet. Fönstret Extern cache för API Management-tjänsten visas.

  8. I listrutan Cacheinstans väljer du Anpassad. I rutan Använd från väljer du sedan samma plats som du använde för API Management-instansen.

  9. I rutan Anslut ionssträng klistrar du in den primära anslutningssträng som du kopierade. Välj sedan Spara i kommandofältet.

    Screenshot that shows how to configure the external cache.

    Den externa cache som du skapade visas nu på sidan Extern cache för API Management-tjänsten.

Lägga till api:et i API Management

Vi måste tillämpa en princip för att göra det möjligt för användare att komma åt API:et. Innan du kan tillämpa en princip måste du dock lägga till API:et i API Management-instansen.

  1. I Menyn i Azure-portalen eller på sidan Start väljer du Alla resurser. Välj sedan den API Management-tjänst som du skapade tidigare.

  2. I MENYN API:er väljer du API:er. FÖNSTRET API:er för API Management-tjänsten visas. Det erbjuder många mallar som du kan välja mellan.

  3. I avsnittet Skapa från definition väljer du OpenAPI. Dialogrutan Skapa från OpenAPI-specifikation visas.

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

  4. I rutan OpenAPI-specifikation klistrar du in swagger JSON-URL:en som du kopierade tidigare.

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

  5. Välj Skapa. FÖNSTRET API:er för API Management-tjänsten visas igen. Den visar alla tillgängliga API-åtgärder för den hanteringsinstansen.

Testa API:et i API Management

API:et har nu lagts till hanteringsinstansen. Nu ska vi testa hur API:et fungerar innan några principer tillämpas.

  1. I fönstret API:er för API Management-tjänsten väljer du fliken Test och väljer sedan åtgärden GET – GetPriceEstimate . Fönstret GetPriceEstimate visas.

  2. Ange följande värden som mallparametrar och frågeparametrar.

    NAMN VÄRDE
    ShippingCode Usa
    Spel Schack
    Höjd 8
    Width 8
  3. Välj Skicka.

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

  4. Granska resultaten. Observera att den exakta quotePreparedTime informationen ingår i HTTP-svarsnyttolasten .

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

  5. Välj Skicka för att upprepa begäran. Observera att tiden i HTTP-svarsnyttolasten har ändrats.

Lägga till en cachelagringsprincip

Nu kan vi aktivera cachelagring genom att lägga till principer för cachelagring av svar.

  1. Välj din API Management-tjänst och välj sedan länken API:er . Välj sedan fliken Design och välj åtgärden GET – GetPriceEstimate . Fönstret GetPriceEstimate visas.

  2. I avsnittet Inkommande bearbetning väljer du + Lägg till princip. Fönstret Lägg till inkommande princip visas.

    Screenshot that shows how to add a caching policy.

  3. Välj Cachesvar. Fönstret Inkommande bearbetning visas igen.

  4. Under Cachesvar anger du 600 i rutan Varaktighet i sekunder. Välj sedan Spara.

  5. I avsnittet Inkommande bearbetning väljer du </>. Princip-XML-redigeraren visas.

  6. Observera att en <cache-lookup> tagg har lagts till i avsnittet <inbound> . En <cache-store> tagg har också lagts till i avsnittet <outbound> .

    Screenshot that shows a policy editor with caching policies.

  7. Välj Spara.

Testa cachen

Vi kör samma test på API:et som i föregående avsnitt, inifrån API Management. Sedan granskar vi resultatet.

  1. I fönstret API:er för DIN API Management-tjänst väljer du fliken Test . Välj sedan åtgärden GET – GetPriceEstimate . Fönstret GetPriceEstimate visas.

  2. Ange följande värden som mallparametrar och frågeparametrar.

    NAMN VÄRDE
    ShippingCode Usa
    Spel Schack
    Höjd 8
    Width 8

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

  3. Välj Skicka.

  4. Granska resultaten. Observera att den exakta quotePreparedTime informationen ingår i HTTP-svarsnyttolasten .

  5. Välj Skicka för att upprepa begäran. Observera att quotePreparedTime värdet i svaret fortfarande är detsamma. Det beror på att ett cachelagrat svar hanteras.

Konfigurera cacheminnet så att det varierar resultat baserat på frågeparametrar

Cacheminnet måste konfigureras för att hantera unika priser baserat på frågeparametern Höjd . Brädbredd används inte för att beräkna kostnaden, så den konfigureras inte.

  1. I fönstret API:er för API Management-tjänsten väljer du fliken Design . Välj sedan åtgärden GET – GetPriceEstimate . Fönstret GetPriceEstimate visas.

  2. I avsnittet Inkommande bearbetning väljer du </> för att redigera principkoden.

  3. Ersätt hela <cache-lookup> taggen med följande XML:

    <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. Välj Spara.

Testa den nya cachekonfigurationen

Cachen bör nu leverera unika svar baserat på frågeparametern Height . Eftersom parametern Width inte påverkar kostnaden används ett cachelagrat svar även när bredden ändras. Vi testar det:

  1. I fönstret API:er för DIN API Management-tjänst väljer du fliken Test . Välj sedan åtgärden GET – GetPriceEstimate . Fönstret GetPriceEstimate visas.

  2. Ange följande värden som mallparametrar och frågeparametrar.

    NAMN VÄRDE
    ShippingCode Usa
    Spel Schack
    Höjd 8
    Width 8
  3. Välj Skicka.

  4. Granska resultaten. Observera att quotePreparedTime ingår i svaret.

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

  5. Välj Skicka för att upprepa begäran. Observera att precis som tidigare har tidsvärdet i svaret inte ändrats. Det beror på att ett cachelagrat svar har hanterats.

  6. Om du vill testa parametern Height använder du följande värden som mallparametrar och frågeparametrar.

    NAMN VÄRDE
    ShippingCode Usa
    Spel Schack
    Höjd 100
    Width 8
  7. Välj Skicka.

  8. Granska resultatet. Den här gången uppdateras och ändras resultatet. En cache användes inte eftersom frågeparametern Height ändrades i begäran. Det här svaret är korrekt för vårt API.

  9. Nu ska vi testa parametern Width . Ange följande värden som mallparametrar och frågeparametrar.

    NAMN VÄRDE
    ShippingCode Usa
    Spel Schack
    Höjd 100
    Bredd 500
  10. Välj Skicka.

  11. Granska resultatet. Den här gången ändras inte resultatet, även om frågeparametern Width är annorlunda. Det beror på att ett cachelagrat svar hanteras.