Упражнение. Обзор входных и выходных привязок

Завершено

В этом упражнении мы создадим функцию, которая выполняется при получении HTTP-запроса и отвечает на каждый запрос, возвращая сообщение.

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

Screenshot of Code and Test pane showing default code for HTTP trigger function template.

Параметр req является триггерной привязкой, а параметр res является выходной привязкой. Это может помочь подумать об этих параметрах как сокращения для "запроса" и "ответа".

Screenshot of Code and Test pane showing default code for HTTP trigger function template.

Параметр Request является триггерной привязкой, а параметр Response является выходной привязкой.

Создание приложения-функции

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

  1. Войдите на портал Azure, используя ту же учетную запись, с помощью которой вы активировали песочницу.

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

  3. В меню Создать ресурс выберите Вычисления, а затем в списке результатов выберите Приложение-функция. Возможно, вам потребуется найти приложение-функцию в окне служба и Marketplace.

  4. Нажмите кнопку "Создать".Откроется область создания приложения-функции .

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

    Параметр значение Description
    Сведения о проекте
    Подписка Подписка Concierge Найдите подписку Azure, которую вы хотите использовать для этого упражнения.
    Группа ресурсов В раскрывающемся списке выберите [имя группы ресурсов песочницы]. Группа ресурсов для песочницы.
    Сведения об экземпляре
    Имя приложения-функции Введите глобально уникальное имя. Это имя идентифицирует ваше новое приложение-функцию. Допустимые символы: a-z, 0-9 и -.
    Вы хотите развернуть код или образ контейнера? Код Параметр для публикации файлов кода или контейнера Docker.
    Стек среды выполнения В раскрывающемся списке выберите Node.js Пример кода в этом модуле написан на JavaScript.
    Версия Примите значение по умолчанию Для этого упражнения достаточно значения по умолчанию.
    Регион В раскрывающемся списке выберите расположение Выберите ближайший к вам регион.
  6. Примите значения по умолчанию для всех остальных параметров. Выберите команду Просмотр и создание, чтобы проверить параметры, а затем нажмите Создать, чтобы подготовить и развернуть приложение-функцию.

  7. Развертывание может занять некоторое время. В глобальных элементах управления рядом с именем учетной записи выберите значок Уведомления и просмотрите сообщение Развертывание выполнено успешно.

  8. По завершении развертывания функции выберите элемент Перейти к ресурсу. Откроется панель Обзор вашего приложения-функции.

  1. Войдите на портал Azure, используя ту же учетную запись, с помощью которой вы активировали песочницу.

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

  3. В меню Создать ресурс выберите Вычисления, а затем найдите и выберите Приложение-функция. Возможно, вам потребуется найти приложение-функцию в окне служба и Marketplace.

  4. Нажмите кнопку "Создать".Откроется область создания приложения-функции .

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

    Параметр значение Description
    Сведения о проекте
    Подписка Подписка Concierge Найдите подписку Azure, которую вы хотите использовать для этого упражнения.
    Группа ресурсов В раскрывающемся списке выберите [имя группы ресурсов песочницы]. Группа ресурсов для песочницы.
    Сведения об экземпляре
    Имя приложения-функции Введите глобально уникальное имя. Это имя идентифицирует ваше новое приложение-функцию. Допустимые символы: a-z, 0-9 и -.
    Вы хотите развернуть код или образ контейнера? Код Параметр для публикации файлов кода или контейнера Docker.
    Стек среды выполнения В раскрывающемся списке выберите PowerShell Core Пример кода в этом модуле предназначен для PowerShell.
    Версия Примите значение по умолчанию Для этого упражнения достаточно значения по умолчанию.
    Регион В раскрывающемся списке выберите расположение Выберите ближайший к вам регион.
  6. Примите значения по умолчанию для всех остальных параметров. Выберите команду Просмотр и создание, чтобы проверить введенные данные, а затем нажмите Создать, чтобы подготовить и развернуть приложение-функцию.

  7. Развертывание может занять некоторое время. В глобальных элементах управления рядом с именем учетной записи выберите значок Уведомления и просмотрите сообщение Развертывание выполнено успешно.

  8. По завершении развертывания функции выберите элемент Перейти к ресурсу. Откроется панель Обзор вашего приложения-функции.

Совет

Если вам не удается найти свое приложение-функцию на портале Azure, узнайте, как добавить приложения-функции в избранное на портале Azure.

Создание функции

Теперь, когда у нас есть приложение-функция, пришло время для создания функции. Каждая функция активируется с помощью триггера. В этом модуле мы определим триггер HTTP с помощью предопределенного шаблона.

  1. Нажмите кнопку "Создать в портал Azure" на вкладке "Функции" на странице "Обзор".

  2. Откроется панель Создание функции.

    Screenshot for the Create Function pane.

  3. В разделе Выберите шаблон выберите Триггер HTTP.

  4. В разделе сведения о шаблоне проверьте следующие параметры.

    • В текстовом поле Новая функция подтвердите имя по умолчанию HttpTrigger1. Azure автоматически присваивает уникальные имена создаваемым функциям. Вы можете выбрать другое имя, но не забудьте использовать значимые имена.

    • В текстовом поле Уровень авторизации подтвердите значение по умолчанию Функция. Уровень авторизации определяет, какие ключи должны присутствовать в запросе для его выполнения. Для уровня авторизации функции требуется ключ для конкретной функции , который можно найти после его создания.

  5. Выберите Создать. После распространения функции для триггера в ваше приложение-функцию появится панель Функции для приложения-функции, в которой будет указан триггер HttpTrigger1.

  6. На панели команд выберите Получить URL-адрес функции. Откроется диалоговое окно Получение URL-адреса функции.

  7. В раскрывающемся списке выберите По умолчанию (ключ функции), а затем щелкните значок Копировать в буфер обмена в конце URL-адреса и нажмите кнопку OK, чтобы закрыть диалоговое окно.

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

    Когда функция возвращает ответ, в браузере отобразятся выходные данные, аналогичные приведенным ниже.

    This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
    
  9. Добавьте следующую строку запроса &name=Joe в конец URL-адреса. Полученный URL-адрес должен иметь примерно следующий вид.

    https://example.azurewebsites.net/api/HttpTrigger1?code=AbCdEfGhIjKlMnOpQrStUvWxYz==&name=Joe

  10. Нажмите клавишу ВВОД, чтобы выполнить запрос в браузере. Когда функция возвращает ответ, в браузере отобразятся выходные данные, аналогичные приведенным ниже.

    Hello, Joe. This HTTP triggered function executed successfully.
    

    Как уже понятно из этого упражнения, вам нужно определить триггер при создании функции. У каждой функции есть один триггер. В этом примере мы используем триггер HTTP. Это означает, что функция запускается при получении HTTP-запроса. На следующем снимке экрана на языке JavaScript показана реализация из шаблона по умолчанию, которая возвращает значение параметра name, полученное в строке или в тексте запроса. Если строка запроса не была предоставлена, функция возвращает сообщение, предлагающее инициатору вызова предоставить значение имени.

    Illustration of default HTTP trigger, showing HTTP request and response binding parameters.

  11. На портале 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
        };
    }
    
  12. Давайте кратко рассмотрим другой файл функции — файл конфигурации 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 с помощью шаблона.

  1. Нажмите кнопку "Создать в портал Azure" на вкладке "Функции" на странице "Обзор".

  2. Откроется панель Создание функции.

  3. В разделе Выберите шаблон выберите Триггер HTTP.

  4. В разделе сведения о шаблоне проверьте следующие параметры.

    • В текстовом поле Новая функция подтвердите имя по умолчанию HttpTrigger1. Azure автоматически предоставляет уникальное имя при создании функции. Вы можете выбрать другое имя, но не забудьте использовать значимые имена.

    • В текстовом поле Уровень авторизации подтвердите значение по умолчанию Функция. Уровень авторизации определяет, какие ключи должны присутствовать в запросе для его выполнения. Ключи функции применяются к конкретным функциям.

      Screenshot for the Add Function pane.

  5. Выберите Создать. Для функции отобразится панель HttpTrigger1.

  6. На панели команд выберите Получить URL-адрес функции. Откроется диалоговое окно Получение URL-адреса функции.

  7. В раскрывающемся списке выберите По умолчанию (ключ функции), а затем щелкните значок Копировать в буфер обмена в конце URL-адреса и нажмите кнопку OK, чтобы закрыть диалоговое окно.

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

    Когда функция возвращает ответ, в браузере отобразятся выходные данные, аналогичные приведенным ниже.

    This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
    
  9. Добавьте строку запроса &name=Joe в конец URL-адреса. Полученный URL-адрес должен иметь примерно следующий вид.

    https://example.azurewebsites.net/api/HttpTrigger1?code=AbCdEfGhIjKlMnOpQrStUvWxYz==&name=Joe

  10. Нажмите клавишу ВВОД, чтобы выполнить запрос в браузере. Когда функция возвращает ответ, в браузере отобразятся выходные данные, аналогичные приведенным ниже.

    Hello, Joe. This HTTP triggered function executed successfully.
    

    Как уже понятно из этого упражнения, вам нужно определить триггер при создании функции. У каждой функции есть один триггер. В этом примере мы используем триггер HTTP. Это означает, что функция запускается при получении HTTP-запроса. На следующем снимке экрана показана реализация из шаблона по умолчанию в PowerShell, которая с помощью командлета Push-OutputBinding возвращает значение параметра "name", которое было частью строки или текста запроса. Если строка не была предоставлена, функция возвращает сообщение, предлагающее инициатору вызова предоставить значение имени.

    Code and Test pane for HTTP request showing response and respective binding parameters.

  11. В меню "Функция" выберите пункт Код и тестирование. Откроется панель Код и тестирование для функции, в которой отображается содержимое файла 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
    })
    
  12. Давайте кратко рассмотрим другой файл функции — файл конфигурации 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. Привязки действительно берут на себя часть сложной работы.

Изучение типов привязки

  1. В меню Функция выберите пункт Интеграция. Откроется панель Интеграция для функции.

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

    Screenshot of vertical flow diagram showing Trigger and Inputs leading to Function and Function leading to Outputs.

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

  2. В поле Входные данные выберите Добавить входные данные. Появится панель Создание входных данных. Выберите раскрывающийся список для типа привязки, чтобы просмотреть список всех возможных типов входных привязок.

    Screenshot of the Add input options.

    Рассмотрите как можно использовать каждую из этих привязок в решении.

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

  3. Выберите элемент Добавить выходные данные в поле Выходные данные. Откроется панель Создание выходных данных. Выберите раскрывающийся список для типа привязки, чтобы просмотреть список всех возможных типов выходных привязок.

    Screenshot of the Add output options.

    Как можно видеть, доступно несколько типов выходных привязок. Далее в этом модуле мы добавим выходные привязки, но теперь нажмите кнопку "Отмена ", чтобы закрыть эту область.

  1. В меню Функция выберите пункт Интеграция. Откроется панель Интеграция для функции.

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

    Screenshot of horizontal flow diagram showing Trigger and Inputs leading to Function and Function leading to Outputs.

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

  2. В поле Входные данные выберите Добавить входные данные. Появится панель Создание входных данных. Выберите раскрывающийся список для типа привязки, чтобы просмотреть список всех возможных типов входных привязок.

    Screenshot of the Add input options.

    Рассмотрите как можно использовать каждую из этих привязок в решении. Существует множество вариантов на выбор.

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

  3. Выберите элемент Добавить выходные данные в поле Выходные данные. Откроется панель Создание выходных данных. Выберите раскрывающийся список для типа привязки, чтобы просмотреть список всех возможных типов выходных привязок.

    Screenshot of the Add output options.

    Как можно видеть, доступно несколько типов выходных привязок. Далее в этом модуле мы добавим выходные привязки, но теперь нажмите кнопку "Отмена ", чтобы закрыть эту область.

Итак, мы узнали, как создать приложение-функцию и добавить в него функции. Мы рассмотрели в действии простую функцию, которая запускается при создании HTTP-запроса. Мы также изучили портал Azure и типы входных и выходных привязок, доступных функциям. В следующем уроке мы будем считывать текст из базы данных с помощью привязки для ввода.