Упражнение. Обзор входных и выходных привязок
В этом упражнении мы создадим функцию, которая выполняется при получении HTTP-запроса и отвечает на каждый запрос, возвращая сообщение.
На иллюстрации ниже в общих чертах показано то, что мы будем создавать.
Параметр req
является триггерной привязкой, а параметр res
является выходной привязкой. Это может помочь подумать об этих параметрах как сокращения для "запроса" и "ответа".
Создание приложения-функции
Давайте создадим приложение-функцию, которое можно использовать в этом модуле. Приложение-функция позволяет группировать функции в логические единицы и упростить развертывание и совместное использование ресурсов, а также управление ими.
Войдите на портал Azure, используя ту же учетную запись, с помощью которой вы активировали песочницу.
В меню ресурсов или на домашней странице выберите элемент Создать ресурс. Откроется панель Создание ресурса.
В меню Создать ресурс выберите Вычисления, а затем в списке результатов выберите Приложение-функция. Возможно, вам потребуется найти приложение-функцию в окне служба и Marketplace.
Выберите "Потребление", а затем нажмите кнопку "Выбрать ". Откроется панель Создание приложения-функции.
На вкладке Основные сведения введите указанные ниже значения для каждого параметра.
Параметр значение Описание Сведения о проекте Отток подписок Подписка Concierge Найдите подписку Azure, которую вы хотите использовать для этого упражнения. Группа ресурсов В раскрывающемся списке выберите [имя группы ресурсов песочницы] .Группа ресурсов для песочницы. Сведения об экземпляре Имя приложения-функции Введите глобально уникальное имя. Это имя идентифицирует ваше новое приложение-функцию. Допустимые символы: a-z
,0-9
и-
.Стек среды выполнения В раскрывающемся списке выберите Node.js Пример кода в этом модуле написан на JavaScript. Версия Примите значение по умолчанию Для этого упражнения достаточно значения по умолчанию. Область/регион В раскрывающемся списке выберите расположение Выберите ближайший к вам регион. Примите значения по умолчанию для всех остальных параметров. Выберите команду Просмотр и создание, чтобы проверить параметры, а затем нажмите Создать, чтобы подготовить и развернуть приложение-функцию.
Развертывание может занять некоторое время. В глобальных элементах управления рядом с именем учетной записи выберите значок Уведомления и просмотрите сообщение Развертывание выполнено успешно.
По завершении развертывания функции выберите элемент Перейти к ресурсу. Откроется панель Обзор вашего приложения-функции.
Войдите на портал Azure, используя ту же учетную запись, с помощью которой вы активировали песочницу.
В меню ресурсов или на домашней странице выберите элемент Создать ресурс. Откроется панель Создание ресурса.
В меню Создать ресурс выберите Вычисления, а затем в списке результатов выберите Приложение-функция. Возможно, вам потребуется найти приложение-функцию в окне служба и Marketplace.
Выберите "Потребление", а затем нажмите кнопку "Выбрать ". Откроется панель Создание приложения-функции.
На вкладке Основные сведения введите указанные ниже значения для каждого параметра.
Параметр значение Описание Сведения о проекте Отток подписок Подписка Concierge Найдите подписку Azure, которую вы хотите использовать для этого упражнения. Группа ресурсов В раскрывающемся списке выберите [имя группы ресурсов песочницы] .Группа ресурсов для песочницы. Сведения об экземпляре Имя приложения-функции Введите глобально уникальное имя. Это имя идентифицирует ваше новое приложение-функцию. Допустимые символы: a-z
,0-9
и-
.Стек среды выполнения В раскрывающемся списке выберите PowerShell Core Пример кода в этом модуле предназначен для PowerShell. Версия Примите значение по умолчанию Для этого упражнения достаточно значения по умолчанию. Область/регион В раскрывающемся списке выберите расположение Выберите ближайший к вам регион. Примите значения по умолчанию для всех остальных параметров. Выберите команду Просмотр и создание, чтобы проверить введенные данные, а затем нажмите Создать, чтобы подготовить и развернуть приложение-функцию.
Развертывание может занять некоторое время. В глобальных элементах управления рядом с именем учетной записи выберите значок Уведомления и просмотрите сообщение Развертывание выполнено успешно.
По завершении развертывания функции выберите элемент Перейти к ресурсу. Откроется панель Обзор вашего приложения-функции.
Совет
Если вам не удается найти свое приложение-функцию на портале Azure, узнайте, как добавить приложения-функции в избранное на портале Azure.
Создание функции
Теперь, когда у нас есть приложение-функция, пришло время для создания функции. Каждая функция имеет триггер, который активирует его. В этом модуле мы определим триггер HTTP с помощью предопределенного шаблона.
Нажмите кнопку "Создать функцию" в разделе "Создать" портал Azure на вкладке "Функции" на странице "Обзор".
Откроется панель Создание функции.
В разделе "Выбор шаблона" выберите шаблон триггераHTTP, а затем нажмите кнопку "Далее".
В разделе сведения о шаблоне проверьте следующие параметры.
В текстовом поле "Имя функции" используйте имя httpTrigger1 по умолчанию. Azure автоматически присваивает уникальные имена создаваемым функциям. Вы можете выбрать другое имя, но не забудьте использовать значимые имена.
В текстовом поле уровня авторизации используйте функцию значения по умолчанию. Уровень авторизации определяет, какие ключи должны присутствовать в запросе для его выполнения. Для уровня авторизации функции требуется ключ для конкретной функции , который можно найти после создания функции.
Нажмите кнопку создания. Когда функция триггера распространяется в приложение-функцию, появится панель "Функции " для приложения-функции , перечисление HttpTrigger1.
На панели команд выберите Получить URL-адрес функции. Откроется диалоговое окно Получение URL-адреса функции.
В раскрывающемся списке выберите По умолчанию (ключ функции), а затем щелкните значок Копировать в буфер обмена в конце URL-адреса и нажмите кнопку OK, чтобы закрыть диалоговое окно.
Вставьте скопированный URL-адрес функции в адресную строку новой вкладки браузера. Нажмите клавишу ВВОД, чтобы выполнить запрос в браузере. Ответ может занять несколько минут, так как приложение-функция инициализирует. Если произошла ошибка времени ожидания, обновите страницу, чтобы отправить запрос повторно.
Когда функция возвращает ответ, в браузере отобразятся выходные данные, аналогичные приведенным ниже.
This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
Добавьте следующую строку запроса
&name=Joe
в конец URL-адреса. Полученный URL-адрес должен иметь примерно следующий вид.https://example.azurewebsites.net/api/HttpTrigger1?code=AbCdEfGhIjKlMnOpQrStUvWxYz==&name=Joe
Нажмите клавишу ВВОД, чтобы выполнить запрос в браузере. Когда функция возвращает ответ, в браузере отобразятся выходные данные, аналогичные приведенным ниже.
Hello, Joe. This HTTP triggered function executed successfully.
Как уже понятно из этого упражнения, вам нужно определить триггер при создании функции. У каждой функции есть один триггер. В этом примере мы используем триггер HTTP. Это означает, что функция запускается при получении HTTP-запроса. На следующем снимке экрана на языке JavaScript показана реализация из шаблона по умолчанию, которая возвращает значение параметра name, полученное в строке или в тексте запроса. Если строка запроса не была предоставлена, функция возвращает сообщение, предлагающее инициатору вызова предоставить значение имени.
На портале Azure в меню Функция выберите пункт Код и тестирование.
Откроется панель Код и тестирование для функции, в которой отображается содержимое файла index.js. Код JavaScript по умолчанию для функции должен выглядеть следующим образом.
module.exports = async function (context, req) { context.log('JavaScript HTTP trigger function processed a request.'); const name = (req.query.name || (req.body && req.body.name)); const responseMessage = name ? "Hello, " + name + ". This HTTP triggered function executed successfully." : "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."; context.res = { // status: 200, /* Defaults to 200 */ body: responseMessage }; }
Давайте кратко рассмотрим другой файл функции — файл конфигурации function.json. Для доступа к этому файлу выберите function.json из раскрывающегося списка путей к файлам над блоком кода. Эти данные конфигурации показаны в приведенном ниже коде JSON.
{ "bindings": [ { "authLevel": "function", "type": "httpTrigger", "direction": "in", "name": "req", "methods": [ "get", "post" ] }, { "type": "http", "direction": "out", "name": "res" } ] }
У функции есть привязка триггераreq типа
httpTrigger
и выходная привязка res типаhttp
.
В приведенном выше коде функции видно, как мы обращались к полезным данным входящего HTTP-запроса с помощью параметра req. Аналогичным образом мы отправили HTTP-ответ, просто задав параметр res. Привязки действительно берут на себя часть сложной работы.
Теперь, когда у нас есть приложение-функция, пора создать функцию. Каждая функция имеет триггер, который активирует его. В этом модуле мы создадим триггер HTTP с помощью шаблона.
Нажмите кнопку "Создать функцию" в разделе "Создать" портал Azure на вкладке "Функции" на странице "Обзор".
Откроется панель Создание функции.
В разделе "Выбор шаблона" выберите шаблон триггераHTTP, а затем нажмите кнопку "Далее".
В разделе сведения о шаблоне проверьте следующие параметры.
В текстовом поле "Имя функции" используйте имя httpTrigger1 по умолчанию. Azure автоматически предоставляет уникальное имя при создании функции. Вы можете выбрать другое имя, но не забудьте использовать значимые имена.
В текстовом поле Уровень авторизации подтвердите значение по умолчанию Функция. Уровень авторизации определяет, какие ключи должны присутствовать в запросе для его выполнения. Ключи функции применяются к конкретным функциям.
Нажмите кнопку создания. Для функции отобразится панель HttpTrigger1.
На панели команд выберите Получить URL-адрес функции. Откроется диалоговое окно Получение URL-адреса функции.
В раскрывающемся списке выберите По умолчанию (ключ функции), а затем щелкните значок Копировать в буфер обмена в конце URL-адреса и нажмите кнопку OK, чтобы закрыть диалоговое окно.
Вставьте скопированный URL-адрес функции в адресную строку новой вкладки браузера. Нажмите клавишу ВВОД, чтобы выполнить запрос в браузере. Ответ может занять несколько минут, так как приложение-функция инициализирует. Если произошла ошибка времени ожидания, обновите страницу, чтобы отправить запрос повторно.
Когда функция возвращает ответ, в браузере отобразятся выходные данные, аналогичные приведенным ниже.
This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
Добавьте строку запроса
&name=Joe
в конец URL-адреса. Полученный URL-адрес должен иметь примерно следующий вид.https://example.azurewebsites.net/api/HttpTrigger1?code=AbCdEfGhIjKlMnOpQrStUvWxYz==&name=Joe
Нажмите клавишу ВВОД, чтобы выполнить запрос в браузере. Когда функция возвращает ответ, в браузере отобразятся выходные данные, аналогичные приведенным ниже.
Hello, Joe. This HTTP triggered function executed successfully.
Как уже понятно из этого упражнения, вам нужно определить триггер при создании функции. У каждой функции есть один триггер. В этом примере мы используем триггер HTTP. Это означает, что функция запускается при получении HTTP-запроса. На следующем снимке экрана показана реализация из шаблона по умолчанию в PowerShell, которая с помощью командлета
Push-OutputBinding
возвращает значение параметра "name", которое было частью строки или текста запроса. Если строка не была предоставлена, функция возвращает сообщение, предлагающее инициатору вызова предоставить значение имени.В меню "Функция" выберите пункт Код и тестирование. Откроется панель Код и тестирование для функции, в которой отображается содержимое файла run.ps1.
Код PowerShell по умолчанию для функции должен выглядеть следующим образом.
using namespace System.Net # Input bindings are passed in via param block. param($Request, $TriggerMetadata) # Write to the Azure Functions log stream. Write-Host "PowerShell HTTP trigger function processed a request." # Interact with query parameters or the body of the request. $name = $Request.Query.Name if (-not $name) { $name = $Request.Body.Name } $body = "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response." if ($name) { $body = "Hello, $name. This HTTP triggered function executed successfully." } # Associate values to output bindings by calling 'Push-OutputBinding'. Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{ StatusCode = [HttpStatusCode]::OK Body = $body })
Давайте кратко рассмотрим другой файл функции — файл конфигурации function.json. Чтобы открыть файл, выберите function.json из раскрывающегося списка путей к файлам. Эти данные конфигурации показаны в приведенном ниже коде JSON.
{ "bindings": [ { "authLevel": "function", "type": "httpTrigger", "direction": "in", "name": "Request", "methods": [ "get", "post" ] }, { "type": "http", "direction": "out", "name": "Response" } ] }
Как вы видите, у этой функции есть привязка триггера Request типа
httpTrigger
и выходная привязка Response типаhttp
. В приведенном выше коде функции видно, как мы обращались к полезным данным входящего HTTP-запроса с помощью параметра Request. Аналогичным образом мы отправили HTTP-ответ, просто задав параметр Response. Привязки действительно берут на себя часть сложной работы.
Изучение типов привязки
В меню Функция выберите пункт Интеграция. Откроется панель Интеграция для функции.
Обратите внимание, что триггер и выходная привязка уже определены, как показано на следующем рисунке. Представление интеграции настраивается в соответствии с шириной и высотой экрана. Одни и те же сведения могут отображаться по горизонтали, если экран достаточно широк.
Вы можете видеть, что мы не можем добавить больше одного триггера. Чтобы изменить триггер для функции, необходимо удалить триггер и создать новый. Тем не менее разделы Входные данные и Выходные данные позволяют добавлять больше одной привязки, чтобы запрос мог принимать более одного входного значения и возвращать более одного выходного значения.
В поле Входные данные выберите Добавить входные данные. Появится панель Создание входных данных. Выберите раскрывающийся список для типа привязки, чтобы просмотреть список всех возможных типов входных привязок.
Рассмотрите как можно использовать каждую из этих привязок в решении.
Далее в этом модуле мы добавим входные привязки, но теперь нажмите кнопку "Отмена ", чтобы закрыть эту область.
Выберите элемент Добавить выходные данные в поле Выходные данные. Откроется панель Создание выходных данных. Выберите раскрывающийся список для типа привязки, чтобы просмотреть список всех возможных типов выходных привязок.
Как можно видеть, доступно несколько типов выходных привязок. Далее в этом модуле мы добавим выходные привязки, но теперь нажмите кнопку "Отмена ", чтобы закрыть эту область.
В меню Функция выберите пункт Интеграция. Откроется панель Интеграция для функции.
Обратите внимание, что триггер и выходная привязка уже определены, как показано на следующем рисунке. Представление интеграции настраивается в соответствии с шириной и высотой экрана. Одни и те же сведения могут отображаться по вертикали, если экран недостаточно широк.
Вы можете видеть, что мы не можем добавить больше одного триггера. Чтобы изменить триггер для функции, необходимо удалить триггер и создать новый. Тем не менее разделы Входные данные и Выходные данные позволяют добавлять несколько привязок, чтобы функция могла принимать более одного входного значения и возвращать более одного выходного значения.
В поле Входные данные выберите Добавить входные данные. Появится панель Создание входных данных. Выберите раскрывающийся список для типа привязки, чтобы просмотреть список всех возможных типов входных привязок.
Рассмотрите как можно использовать каждую из этих привязок в решении. Существует множество вариантов на выбор.
Далее в этом модуле мы добавим входные привязки, но теперь нажмите кнопку "Отмена ", чтобы закрыть эту область.
Выберите элемент Добавить выходные данные в поле Выходные данные. Откроется панель Создание выходных данных. Выберите раскрывающийся список для типа привязки, чтобы просмотреть список всех возможных типов выходных привязок.
Как можно видеть, доступно несколько типов выходных привязок. Далее в этом модуле мы добавим выходные привязки, но теперь нажмите кнопку "Отмена ", чтобы закрыть эту область.
До сих пор мы узнали, как создать приложение-функцию и добавить в нее функцию. Мы видели простую функцию в действии, которая выполняется при выполнении HTTP-запроса. Мы также изучили портал Azure и типы входных и выходных привязок, доступных для функций. В следующем уроке мы будем считывать текст из базы данных с помощью привязки для ввода.