Упражнение — добавление еще одного приложения "Функции Azure" в существующий API

Завершено

Напомним, что все отдельные микрослужбы, являющиеся Функциями Azure, необходимо интегрировать в один API. Вы добавили приложение-функцию Products в новый экземпляр Управление API. Теперь необходимо добавить в этот API еще одно приложение-функцию.

В этом упражнении вы добавите приложение-функцию Orders в API и используйте curl средство для тестирования интегрированной системы.

Тестирование функции OrderDetails

Прежде чем добавлять приложение-функцию "Заказы" в API, давайте протестируем функцию, которую оно размещает, — OrderDetails.

  1. В меню ресурсов Azure или на домашней странице выберите все ресурсы. Появится панель Все ресурсы.

  2. Отсортируйте ресурсы по типу, а затем выберите приложение-функцию, имя которого начинается с \OrderFunction. Откроется панель "Обзор" приложения-функции OrderFunction.

  3. В списке функций для приложения-функции выберите OrderDetails. Для функции OrderDetails откроется панель "Обзор".

  4. В меню "Сведения о заказе" в разделе Разработчик выберите Code + Test (Код и тестирование). Откроется панель Код и тестирование для функции OrderDetails, в которой отображается содержимое файла function.json.

    OrderDetails JSON code, with Code + Test in menu and Test/Run in command bar highlighted.

  5. На панели команд нажмите Тест/Запуск. Откроется вкладка параметров Ввод для функции OrderDetails.

  6. В поле метод HTTP выберите GET в раскрывающемся списке, а затем в поле Запрос, выберите Добавить параметр, в поле Имя — имя, а в поле Значение — Chiba (значение чувствительно к регистру), после чего нажмите кнопку Запуск.

  7. Откроется консоль журнала, в которой отображается состояние запроса. На вкладке Выходные данные отображается код отклика HTTP (200 OK) и содержимое в формате JSON.

    Add a new function option page appears.

    Также можно выполнить дополнительные запросы с использованием значений имени Henri и Barriclough, чтобы получить различные заказы клиентов.

  8. Нажмите кнопку Закрыть, чтобы закрыть вкладки ввода и вывода для пункта "Тест/Запуск".

  9. На панели команд в области OrderDetails выберите Получить URL-адрес функции. Обратите внимание, что URL-адрес — это имя функции в домене azurewebsites.net.

Добавление функции в существующий API

На этом шаге мы добавим функцию Order в ресурс Управление API, созданный в предыдущем упражнении. В этом упражнении мы использовали интерфейс службы "Управление API" из пользовательского интерфейса приложения-функции. Здесь мы перейдем к нашему экземпляру Управление API через меню ресурсов портал Azure, чтобы продемонстрировать, что оба подхода доступны.

  1. В меню ресурсов Azure или на странице Домашняя выберите Все ресурсы. Появится панель Все ресурсы.

  2. Отсортируйте ресурсы по Типу, а затем выберите службу "Управление API" OnlineStore. Откроется служба "Управление API" для OnlineStore.

  3. В меню в разделе APIвыберите API. На панели API отображаются параметры для определения нового API.

  4. В разделе Create from Azure resource (Создать на основе ресурса Azure) выберите Приложение-функция.

    Screenshot of the Add a New API screen with a callout highlighting the Azure Function App option.

    Откроется диалоговое окно Создание из приложения-функции.

  5. Чтобы выбрать приложение-функцию, щелкните Просмотреть. Откроется панель Импорт Функций Azure.

  6. В поле Настроить обязательные параметры щелкните Выбрать.

    Screenshot of the Import Azure Functions dialog box with Configure required settings field and Select button highlighted.(.. /media/5-import-azure-function-app-03-expanded.png#lightbox)

    Откроется панель Выбор приложения-функции Azure.

  7. Выберите OrderFunctionNNNNNNN и нажмите кнопку Выбрать. Область импорта Функции Azure снова появится с настроенным приложением-функцией OrderDetails.

  8. Убедитесь, что пункт OrderDetails отмечен, и затем щелкните Выбрать в нижней части страницы, чтобы добавить функцию. Откроется диалоговое окно Создание из приложения-функции.

  9. Замените значение в поле Суффикс URL-адреса API на orders. Обратите внимание, как это изменение обновляет базовый URL-адрес. Щелкните Создать, чтобы создать API.

    Screenshot of the Create from Function App dialog populated with details of the Orders function.

    В службе "Управление API" OnlineStore отображается вкладка Проектирование со всеми доступными API-интерфейсами (GET, POST) для OrderDetails.

Тестирование конечной точки заказов OnlineStore на портале

Теперь, когда мы добавили OrderDetails в наш API, давайте протестируем его с помощью средств Управление API в портал Azure.

  1. На вкладке "Проектирование" для API-интерфейсов OrderFunctionNNNNNN в разделе Все операции выберите GET OrderDetails, а затем перейдите на вкладку Тестирование.

  2. В разделе Параметры запроса выберите Добавить параметри введите имя в поле NAME и Chiba в поле VALUE. Выберите Отправить.

  3. На вкладке сообщения HTTP-ответа показан успешный HTTP-запрос (HTTP/1.1/200 OK), а также объект JSON, в котором отображается идентификатор заказа, имя клиента, общая цена заказа и состояние доставки.

  4. Прокрутите страницу вверх до раздела HTTP-запрос; обратите внимание, что запрос был отправлен в поддомен и подкаталог в домене azure-api.net. Это расположение отличается от домена узла azurewebsites.net.

Тестирование объединенного API

Для отправки запросов в API можно использовать программу командной строки curl. Это идеальный вариант URL-адреса, так как мы можем использовать его для включения правильного ключа подписки в запрос. Запросу также требуется расположение API, который размещается в службе "Управление API Azure" и в данном случае состоит из функций "Продукты" и "Заказы".

  1. В меню ресурсов Azure или на домашней странице выберите Все ресурсы.

  2. Отсортируйте ресурсы по типу, а затем выберите службу "Управление API" OnlineStore. Откроется служба "Управление API" для OnlineStore.

  3. В разделе Essentials наведите указатель мыши на поле URL-адрес шлюза и щелкните значок Копировать в буфер обмена.

  4. В Azure Cloud Shell справа определим некоторые переменные. Выполните следующую команду, заменив <paste URL here> заполнитель значением URL-адреса , скопированным в буфер обмена, а затем нажмите клавишу ВВОД. Это значение определяет переменную шлюза.

    GATEWAY_URL=<paste URL here>
    
  5. В Azure в меню службы Управление API OnlineStore прокрутите вниз до API и выберите "Подписки". Откроется панель Подписки для экземпляра службы "Управление API" OnlineStore.

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

  7. В поле Первичный ключ щелкните значок Копировать в буфер обмена.

  8. В Cloud Shell выполните следующую команду, заменив заполнитель на значение в буфере обмена, а затем нажмите клавишу ВВОД.

    SUB_KEY=<paste key here>
    
  9. Теперь мы можем получить сведения о заказе и продукте, отправив запрос к одной и той же службе "Управление API":

    1. Чтобы запросить сведения о заказе для клиента по имени Henri, выполните следующую команду в Cloud Shell:

       curl -X GET "$GATEWAY_URL/orders/OrderDetails?name=Henri" -H "Ocp-Apim-Subscription-Key:$SUB_KEY"
      

      Ответ содержит блок кода JSON с сведениями о заказе, показывающими, что заказ 56224 был отправлен в Pascale Henri. Вы также можете попробовать команду с именами Chiba и Barriclough для различных результатов.

    2. Чтобы запросить сведения о продукте с идентификатором (id) 2, выполните следующую команду в Cloud Shell:

       curl -X GET "$GATEWAY_URL/products/ProductDetails?id=2" -H "Ocp-Apim-Subscription-Key:$SUB_KEY"
      

      Ответ содержит блок кода JSON со сведениями о продукте. Вы можете также выполнить команду с идентификаторами (id1 и 3 для получения других результатов.

Обратите внимание, что обе функции теперь можно вызывать через конечные точки в домене azure-api.net (в соответствии с определением в GATEWAY_URL), который является доменом, используемым службой "Управление API Azure". В других модулях обучения вы можете узнать, как применять политики, параметры безопасности, внешние кэши и другие функции ко всем функциям шлюза службы "Управление API". Шлюз предоставляет центральную контрольную точку, в которой можно управлять несколькими микрослужбами, не изменяя код.