Упражнение. Настройка политики кэширования

Завершено

При управлении API с помощью Azure Управление API можно изменить поведение API без необходимости переписать код с помощью политик. Чтобы кэшировать ответы API, используйте политики кэширования Управление API.

Как разработчик в компании настольных игр, вы решаете реализовать кэширование для API настольных игр. Сначала необходимо добавить API в Управление API. Затем вы напишете политики кэширования. Мы сделаем оба в этом упражнении.

Важно!

Для выполнения этого упражнения вам нужна собственная подписка Azure. При этом с вас может взиматься плата. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.

Примечание.

В этом упражнении веб-API игровой доски размещается в домене azurewebsites.net. Экземпляр службы управления API находится в домене azure-api.net.

Создание кэша Redis

Мы будем использовать уровень потребления для Управление API для этого модуля. На этом уровне Azure настраивает экземпляры Управления API примерно за минуту. Другие уровни могут занять до 30 минут или дольше.

Уровень потребления в службе Управления API предназначен для организаций, предпочитающих создавать API бессерверным образом. На этом уровне отсутствует внутренний кэш. Поэтому необходимо создать внешний кэш Redis и настроить политику кэширования Управления API для его использования.

Давайте сразу создадим кэш. Это позволит выполнять установку в фоновом режиме, пока мы работаем над другими этапами:

  1. Войдите на портал Azure.

  2. Выберите Создать ресурс в меню ресурсов на портале Azure или на странице Главная. Откроется панель Создание ресурса.

  3. В меню Создание ресурса выберите Базы данных, а затем найдите и выберите Кэш Azure для Redis. Нажмите кнопку создания. Откроется панель Новый кэш Redis.

  4. На вкладке Основные сведения введите указанные ниже значения для каждого параметра.

    Параметр Значение
    Сведения о проекте
    Отток подписок Выберите свою подписку.
    Группа ресурсов Выберите новую или существующую группу ресурсов. Группа ресурсов — это логический контейнер, содержащий связанные ресурсы для решения Azure.
    Сведения об экземпляре
    DNS-имя Введите уникальное имя. Запишите его. Оно понадобится вам позже.
    Location Выберите доступный регион.
    Тип кэша Стандартный C1

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

  5. Щелкните Просмотр и создание для проверки вашего ввода, а затем нажмите кнопку Создать.

Создание веб-API в Службе приложений Azure

Чтобы создать веб-API службы приложение Azure, выполните следующие действия.

  1. На панели задач Azure щелкните значок Cloud Shell, чтобы открыть Azure Cloud Shell.

    Screenshot of Cloud Shell icon in taskbar.

  2. Клонируйте пример веб-API, выполнив следующую команду:

    git clone https://github.com/MicrosoftDocs/mslearn-improve-api-performance-with-apim-caching-policy.git
    
  3. Настройте веб-API, выполнив следующие команды:

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

Setup.sh состоит из семи частей, для выполнения которых требуется несколько минут. По их завершении отобразятся три URL-адреса:

  • Пробный URL-адрес веб-API для тестирования веб-API
  • URL-адрес Swagger для пользовательского интерфейса Swagger
  • URL-адрес Swagger JSON для определения OpenAPI

Запишите эти URL-адреса. Они понадобятся в следующей задаче.

Тестирование развернутого веб-API

После создания веб-API в Cloud Shell его можно протестировать. Чтобы запустить тест, отправьте запрос GET в браузер или проверьте определение OpenAPI. Этот тест выполняется в веб-API на домене azurewebsites.net до его добавления в службу Управления API.

  1. Выберите Все ресурсы в меню ресурсов на портале Azure или на странице Главная. Затем выберите ресурс Службы приложений. Появится панель Службы приложений BoardGamingAPI123aa456789. Для вашей реализации цифры в названии будут отличаться.

  2. В качестве теста на панели команд вкладки Обзор выберите Обзор. Обратите внимание на сообщение об ошибке. В браузере появится сообщение "Веб-страница для этого адреса не найдена". Это происходит, поскольку веб-API не реализует пользовательский веб-интерфейс.

  3. В новой вкладке браузера вставьте ранее скопированный пробный URL-адрес веб-API и нажмите клавишу ВВОД. В браузере отобразится ответ в формате JSON. Обратите внимание, что результат включает время сервера с меткой quotePreparedTime.

  4. Во второй вкладке браузера вставьте ранее скопированный URL-адрес Swagger и нажмите клавишу ВВОД. В браузере отобразится страница Swagger для игровой доски API. Не закрывайте эту вкладку браузера, она еще пригодится.

  5. В третьей вкладке браузера вставьте ранее скопированный URL-адрес Swagger JSON. В браузере отобразится спецификация OpenAPI в формате JSON.

Не закрывайте эти вкладки. Они понадобятся позже.

Создание нового экземпляра службы Управления API

Теперь, когда у нас есть рабочий API, давайте настроим службу управления API:

  1. Выберите Создать ресурс в меню ресурсов на портале Azure или на странице Главная. Откроется панель Создание ресурса.

  2. В меню "Создание ресурса" выберите "Интеграция" и выберите Управление API из списка результатов. Откроется панель "Создание Управление API службы".

  3. На вкладке Основные сведения введите указанные ниже значения для каждого параметра.

    Параметр Значение
    Сведения о проекте
    Отток подписок Выберите свою подписку.
    Группа ресурсов Выберите новую или существующую группу ресурсов. Группа ресурсов — это логический контейнер, содержащий связанные ресурсы для решения Azure.
    Сведения об экземпляре
    Регион Выберите то же расположение, которое использовалось для кэша Redis.
    Имя ресурса Выберите уникальное имя. Запишите его. Оно понадобится вам позже.
    Название организации BoardGames
    Адрес электронной почты администратора Адрес электронной почты для получения всех системных уведомлений.
    Ценовая категория
    Ценовая категория Потребление
  4. Щелкните Просмотр и создание для проверки вашего ввода, а затем нажмите кнопку Создать.

Настройка службы Управления API для использования внешнего кэша

Экземпляр службы Управления API можно настроить для использования кэша Redis в качестве внешнего кэша, только если он полностью развернут.

  1. Выберите Все ресурсы в меню ресурсов на портале Azure или на странице Главная. Затем выберите тип ресурса Кэш Azure для Redis. Откроется панель Кэш Azure для Redis.

  2. В разделе "Обзор" области должно отображаться состояние ресурса в качестве запущенного. Если это не так, продолжайте проверка состояние каждые несколько минут, щелкнув ссылку "Обновить". Следующие действия можно выполнять, только если выполняется развертывание кэша Redis.

  3. В меню Кэш Azure для Redis в разделе Параметры левой области выберите ключи доступа. Откроется панель Ключи доступа для только что созданного экземпляра Кэша Azure для Redis.

  4. В правом углу текстового поля Основная строка подключения (StackExchange.Redis) щелкните значок Копировать в буфер обмена.

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

  5. На панели Все ресурсы выберите ранее созданный ресурс службы Управления API. Откроется панель Служба управления API.

  6. В меню Служба Управления API в разделе Развертывание и инфраструктура слева выберите Внешний кэш. Откроется панель Внешний кэш для службы управления API.

  7. Выберите +Добавить из панели команд. Откроется панель Внешний кэш для службы управления API.

  8. В раскрывающемся списке Экземпляр кэша выберите Пользовательский. Затем в поле Использовать из выберите расположение, которое использовалось для экземпляра Управления API.

  9. В поле Строка подключения вставьте скопированную основную строку подключения. На панели команд щелкните Сохранить.

    Screenshot that shows how to configure the external cache.

    Созданный внешний кэш теперь указан на странице внешнего кэша для службы Управление API.

Добавление API в службу Управления API

Чтобы предоставить пользователям доступ к API, необходимо применить политику. Однако перед применением политики необходимо добавить API в экземпляр службы Управления API.

  1. Выберите Все ресурсы в меню портала Azure или на странице Главная. Затем выберите ранее созданную службу Управления API.

  2. В меню API выберите API. Откроется панель API для службы управления API. В этом разделе представлены различные шаблоны.

  3. В разделе Создание из определения выберите OpenAPI. Откроется диалоговое окно Создание из спецификации OpenAPI.

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

  4. В текстовое поле Спецификация OpenAPI вставьте ранее скопированный URL-адрес Swagger JSON.

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

  5. Нажмите кнопку создания. Повторно откроется панель API для службы Управления API. В ней отображены все операции API, доступные для этого экземпляра управления.

Тестирование API в службе управления API

API добавлен к экземпляру службы управления. Прежде чем применять политики, давайте проверим, как работает API.

  1. На панели API службы Управления API перейдите на вкладку Тестирование и выберите команду GET — GetPriceEstimate. Откроется панель GetPriceEstimate.

  2. Укажите следующие значения для параметров шаблона и параметров запроса.

    ИМЯ ЗНАЧЕНИЕ
    ShippingCode США
    Игровой шахматы
    Height 8
    Width 8
  3. Выберите Отправить.

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

  4. Проверка результатов. Обратите внимание, что точность quotePreparedTime включена в полезные данные ответа HTTP.

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

  5. Нажмите Отправить для повторной отправки запроса. Обратите внимание, что время в полезных данных ответа HTTP изменилось.

Добавление политики кэширования

Теперь можно включить кэширование, добавив политики кэширования ответов.

  1. Выберите свою службу Управления API, а затем щелкните ссылку API. Перейдите на вкладку Проектирование и выберите команду GET — GetPriceEstimate. Откроется панель GetPriceEstimate.

  2. В разделе Обработка входящих данных выберите + Добавить политику. Откроется панель Добавление политики входящего трафика.

    Screenshot that shows how to add a caching policy.

  3. Нажмите Кэшировать ответы. Снова появится панель Обработка входящих данных.

  4. В разделе Ответы кэша введите 600 в текстовое поле Длительность в секундах. Затем выберите Сохранить.

  5. В разделе Обработка входящих данных выберите </>. Откроется редактор XML-политики.

  6. Обратите внимание, что <cache-lookup> тег добавлен в <inbound> раздел. В <cache-store> раздел также добавлен <outbound> тег.

    Screenshot that shows a policy editor with caching policies.

  7. Выберите Сохранить.

Тестирование кэша

Мы выполним такую же проверку API, как и в предыдущем разделе, из службы Управления API. Затем изучим результаты.

  1. На панели API службы Управления API перейдите на вкладку Тестирование и выберите команду GET — GetPriceEstimate. Откроется панель GetPriceEstimate.

  2. Укажите следующие значения для параметров шаблона и параметров запроса.

    ИМЯ ЗНАЧЕНИЕ
    ShippingCode США
    Игровой шахматы
    Height 8
    Width 8

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

  3. Выберите Отправить.

  4. Проверка результатов. Обратите внимание, что точность quotePreparedTime включена в полезные данные ответа HTTP.

  5. Нажмите Отправить для повторной отправки запроса. Обратите внимание, что quotePreparedTime значение в ответе по-прежнему совпадает. Это происходит благодаря обработке кэшированного ответа.

Настройка кэша для изменения результатов на основе параметров запроса

Необходимо настроить кэш для обработки неповторяющихся цен по параметру запроса Высота. Для расчета стоимости Ширина не используется, поэтому ее настраивать не нужно.

  1. На панели API службы Управления API перейдите на вкладку Проектирование и выберите команду GET — GetPriceEstimate. Откроется панель GetPriceEstimate.

  2. В разделе Обработка входящих данных выберите </>, чтобы изменить код политики.

  3. Замените весь тег <cache-lookup> следующим кодом 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. Выберите Сохранить.

Тестирование новой конфигурации кэша

Теперь кэш будет передавать неповторяющиеся ответы на основе параметра запроса Высота. Так как параметр Ширина не влияет на стоимость, даже при изменении ширины будет использоваться кэшированный ответ. Давайте это проверим:

  1. На панели API службы Управления API перейдите на вкладку Тестирование и выберите команду GET — GetPriceEstimate. Откроется панель GetPriceEstimate.

  2. Укажите следующие значения для параметров шаблона и параметров запроса.

    ИМЯ ЗНАЧЕНИЕ
    ShippingCode США
    Игровой шахматы
    Height 8
    Width 8
  3. Выберите Отправить.

  4. Проверка результатов. Обратите внимание, что он quotePreparedTime включен в ответ.

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

  5. Нажмите Отправить для повторной отправки запроса. Обратите внимание, что, как и прежде, значение времени в ответе осталось неизменным. Это происходит благодаря обработке кэшированного ответа.

  6. Чтобы протестировать параметр Высота, укажите следующие значения для параметров шаблона и параметров запроса.

    ИМЯ ЗНАЧЕНИЕ
    ShippingCode США
    Игровой шахматы
    Height 100
    Width 8
  7. Выберите Отправить.

  8. Просмотрите результаты. Сейчас результат обновился и изменился. Кэш не использовался, поскольку параметр Высота был изменен в запросе. Этот ответ соответствует нашему API.

  9. Давайте протестируем параметр Ширина. Укажите следующие значения для параметров шаблона и параметров запроса.

    ИМЯ ЗНАЧЕНИЕ
    ShippingCode США
    Игровой шахматы
    Height 100
    Width 500
  10. Выберите Отправить.

  11. Просмотрите результаты. На этот раз результат не изменился, хотя параметр запроса Ширина отличается. Это происходит благодаря обработке кэшированного ответа.