Упражнение — добавление еще одного приложения "Функции Azure" в существующий API
Напомним, что все отдельные микрослужбы, являющиеся Функциями Azure, необходимо интегрировать в один API. Вы добавили приложение-функцию Products в новый экземпляр Управление API. Теперь необходимо добавить в этот API еще одно приложение-функцию.
В этом упражнении вы добавите приложение-функцию Orders в API и используйте curl
средство для тестирования интегрированной системы.
Тестирование функции OrderDetails
Прежде чем добавлять приложение-функцию "Заказы" в API, давайте протестируем функцию, которую оно размещает, — OrderDetails.
В меню ресурсов Azure или на домашней странице выберите все ресурсы. Появится панель Все ресурсы.
Отсортируйте ресурсы по типу, а затем выберите приложение-функцию, имя которого начинается с \OrderFunction. Откроется панель "Обзор" приложения-функции OrderFunction.
В списке функций для приложения-функции выберите OrderDetails. Для функции OrderDetails откроется панель "Обзор".
В меню "Сведения о заказе" в разделе Разработчик выберите Code + Test (Код и тестирование). Откроется панель Код и тестирование для функции OrderDetails, в которой отображается содержимое файла
function.json
.На панели команд нажмите Тест/Запуск. Откроется вкладка параметров Ввод для функции OrderDetails.
В поле метод HTTP выберите GET в раскрывающемся списке, а затем в поле Запрос, выберите Добавить параметр, в поле Имя — имя, а в поле Значение — Chiba (значение чувствительно к регистру), после чего нажмите кнопку Запуск.
Откроется консоль журнала, в которой отображается состояние запроса. На вкладке Выходные данные отображается код отклика HTTP (200 OK) и содержимое в формате JSON.
Также можно выполнить дополнительные запросы с использованием значений имени Henri и Barriclough, чтобы получить различные заказы клиентов.
Нажмите кнопку Закрыть, чтобы закрыть вкладки ввода и вывода для пункта "Тест/Запуск".
На панели команд в области OrderDetails выберите Получить URL-адрес функции. Обратите внимание, что URL-адрес — это имя функции в домене azurewebsites.net.
Добавление функции в существующий API
На этом шаге мы добавим функцию Order в ресурс Управление API, созданный в предыдущем упражнении. В этом упражнении мы использовали интерфейс службы "Управление API" из пользовательского интерфейса приложения-функции. Здесь мы перейдем к нашему экземпляру Управление API через меню ресурсов портал Azure, чтобы продемонстрировать, что оба подхода доступны.
В меню ресурсов Azure или на странице Домашняя выберите Все ресурсы. Появится панель Все ресурсы.
Отсортируйте ресурсы по Типу, а затем выберите службу "Управление API" OnlineStore. Откроется служба "Управление API" для OnlineStore.
В меню в разделе APIвыберите API. На панели API отображаются параметры для определения нового API.
В разделе Create from Azure resource (Создать на основе ресурса Azure) выберите Приложение-функция.
Откроется диалоговое окно Создание из приложения-функции.
Чтобы выбрать приложение-функцию, щелкните Просмотреть. Откроется панель Импорт Функций Azure.
В поле Настроить обязательные параметры щелкните Выбрать.
(.. /media/5-import-azure-function-app-03-expanded.png#lightbox)
Откроется панель Выбор приложения-функции Azure.
Выберите OrderFunctionNNNNNNN и нажмите кнопку Выбрать. Область импорта Функции Azure снова появится с настроенным приложением-функцией OrderDetails.
Убедитесь, что пункт OrderDetails отмечен, и затем щелкните Выбрать в нижней части страницы, чтобы добавить функцию. Откроется диалоговое окно Создание из приложения-функции.
Замените значение в поле Суффикс URL-адреса API на orders. Обратите внимание, как это изменение обновляет базовый URL-адрес. Щелкните Создать, чтобы создать API.
В службе "Управление API" OnlineStore отображается вкладка Проектирование со всеми доступными API-интерфейсами (GET, POST) для OrderDetails.
Тестирование конечной точки заказов OnlineStore на портале
Теперь, когда мы добавили OrderDetails в наш API, давайте протестируем его с помощью средств Управление API в портал Azure.
На вкладке "Проектирование" для API-интерфейсов OrderFunctionNNNNNN в разделе Все операции выберите GET OrderDetails, а затем перейдите на вкладку Тестирование.
В разделе Параметры запроса выберите Добавить параметри введите имя в поле NAME и Chiba в поле VALUE. Выберите Отправить.
На вкладке сообщения HTTP-ответа показан успешный HTTP-запрос (HTTP/1.1/200 OK), а также объект JSON, в котором отображается идентификатор заказа, имя клиента, общая цена заказа и состояние доставки.
Прокрутите страницу вверх до раздела HTTP-запрос; обратите внимание, что запрос был отправлен в поддомен и подкаталог в домене azure-api.net. Это расположение отличается от домена узла azurewebsites.net.
Тестирование объединенного API
Для отправки запросов в API можно использовать программу командной строки curl
. Это идеальный вариант URL-адреса, так как мы можем использовать его для включения правильного ключа подписки в запрос. Запросу также требуется расположение API, который размещается в службе "Управление API Azure" и в данном случае состоит из функций "Продукты" и "Заказы".
В меню ресурсов Azure или на домашней странице выберите Все ресурсы.
Отсортируйте ресурсы по типу, а затем выберите службу "Управление API" OnlineStore. Откроется служба "Управление API" для OnlineStore.
В разделе Essentials наведите указатель мыши на поле URL-адрес шлюза и щелкните значок Копировать в буфер обмена.
В Azure Cloud Shell справа определим некоторые переменные. Выполните следующую команду, заменив
<paste URL here>
заполнитель значением URL-адреса , скопированным в буфер обмена, а затем нажмите клавишу ВВОД. Это значение определяет переменную шлюза.GATEWAY_URL=<paste URL here>
В Azure в меню службы Управление API OnlineStore прокрутите вниз до API и выберите "Подписки". Откроется панель Подписки для экземпляра службы "Управление API" OnlineStore.
На правом краю элемента Встроенная подписка с полным доступом нажмите кнопку с многоточием …, а затем выберите Показать/скрыть ключи в контекстном меню. Отобразятся первичный ключ и вторичный ключ для API.
В поле Первичный ключ щелкните значок Копировать в буфер обмена.
В Cloud Shell выполните следующую команду, заменив заполнитель на значение в буфере обмена, а затем нажмите клавишу ВВОД.
SUB_KEY=<paste key here>
Теперь мы можем получить сведения о заказе и продукте, отправив запрос к одной и той же службе "Управление API":
Чтобы запросить сведения о заказе для клиента по имени 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 для различных результатов.
Чтобы запросить сведения о продукте с идентификатором (id) 2, выполните следующую команду в Cloud Shell:
curl -X GET "$GATEWAY_URL/products/ProductDetails?id=2" -H "Ocp-Apim-Subscription-Key:$SUB_KEY"
Ответ содержит блок кода JSON со сведениями о продукте. Вы можете также выполнить команду с идентификаторами (id) 1 и 3 для получения других результатов.
Обратите внимание, что обе функции теперь можно вызывать через конечные точки в домене azure-api.net (в соответствии с определением в GATEWAY_URL), который является доменом, используемым службой "Управление API Azure". В других модулях обучения вы можете узнать, как применять политики, параметры безопасности, внешние кэши и другие функции ко всем функциям шлюза службы "Управление API". Шлюз предоставляет центральную контрольную точку, в которой можно управлять несколькими микрослужбами, не изменяя код.