Упражнение. Создание и тестирование простой функции Azure локально с помощью Visual Studio
Visual Studio предоставляет отличную среду для создания и тестирования приложения-функции Azure. Вы можете разработать функцию Azure локально и проверить, что она работает правильно, прежде чем развернуть ее в облаке.
В сценарии веб-сайта с элитными часами существует требование для функции, которая возвращает подробные сведения о часах при указании конкретной модели часов. Возвращаемые данные включают в себя: производитель, тип регистра (твердый, прозрачный или выгравированные), гравюра, стиль набора, отделка дела, количество драгоценных камней и т. д.
В этом упражнении вы реализуете и тестируете версию этой функции локально с помощью Visual Studio.
Примечание.
Прежде чем начать это упражнение, убедитесь, что установлен vs 2022, а также расширения веб-рабочей нагрузки ASP.NET и веб-разработки и разработки Azure.
Создание приложения-функции Azure
Создайте приложение-функцию Azure с помощью шаблона Функции Azure.
Запустите Visual Studio Installer и на начальной странице Visual Studio 2022 нажмите кнопку "Изменить".
Убедитесь, что выбраны и доступны рабочие нагрузки ASP.NET и веб-разработка и Разработка Azure (в противном случае выберите Установить при скачивании), а затем нажмите кнопку Закрыть.
На начальной странице Visual Studio 2022 выберите "Запустить".
В меню Начало работы выберите команду Создать проект. Откроется страница Создание нового проекта.
Найдите шаблон Функции Azure или прокрутите список до этого шаблона, а затем нажмите кнопку Далее.
Откроется страница Настройка нового проекта. Введите следующие значения.
Поле значение Имя проекта WatchPortalFunction Местонахождение Выберите расположение для хранения проекта, перейдя в папку или создав папку на локальном компьютере. Имя решения Примите значение WatchPortalFunction (по умолчанию). Поместите решение и проект в один каталог Флажок снят (не выбран). Этот параметр гарантирует правильную структуру папок для этого модуля. Выберите Далее.
Откроется страница дополнительных сведений.
Выберите следующие значения.
Поле значение Версия Dotnet *.NET 6.0 (долгосрочная поддержка) Триггер функции Триггер HTTP Использование Azurite для учетной записи хранения среды выполнения (AzureWebJobsStorage) Помечено Включение Docker Флажок снят Уровень авторизации Анонимный. Если в уведомлении Visual Studio указано, что обновления готовы, нажмите Обновить.
Нажмите кнопку создания.
Visual Studio создает проект
WatchPortalFunction
и отображает файл исходного кода приложения-функцииFunction1.cs
в окне редактора кода. Файл содержит код для класса с именемFunction1
.Как показано в следующем примере кода,
Function1
класс содержит стандартный код из шаблона триггера HTTP. МетодRun
помечается атрибутом[FunctionName ("Function1")]
. Как было указано на предыдущем уроке, стандартные параметры для методаRun
являются объектомHttpRequest
, содержащим сведения о запросе, который активировал функцию, и запись журнала трассировки для записи данных трассировки.namespace WatchPortalFunction { public static class Function1 { [FunctionName("Function1")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); string name = req.Query["name"]; string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); name = name ?? data?.name; return name != null ? (ActionResult)new OkObjectResult($"Hello, {name}") : new BadRequestObjectResult("Please pass a name on the query string or in the request body"); } } }
Создание функции Azure WatchInfo
В меню "Вид" выберите Обозреватель решений. В окне Обозреватель решений щелкните правой кнопкой мыши проект Функций Azure WatchPortalFunction и в контекстном меню выберите команду Добавить>Новая Функция Azure.
В окне Добавление нового элемента — WatchPortalFunction щелкните Функция Azure. В поле Имя введите WatchInfo.cs, а затем выберите Добавить.
В окне Новая функция Azure — WatchInfo щелкните Триггер HTTP. Из раскрывающегося списка Уровень авторизации выберите Анонимный режим и Добавить.
Visual Studio создает новую функцию, а метод
Run
помечается атрибутом[FunctionName("WatchInfo")]
.В теле функции
Run
удалите код после строкиlog.LogInformation
. Результат должен выглядеть следующим образом.namespace WatchPortalFunction { public static class WatchInfo { [FunctionName("WatchInfo")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); } } }
Вставьте приведенный ниже код в метод
Run
после строкиlog.LogInformation
.// Retrieve the model id from the query string string model = req.Query["model"]; // If the user specified a model id, find the details of the model of watch if (model != null) { // Use dummy data for this example dynamic watchinfo = new { Manufacturer = "abc", CaseType = "Solid", Bezel = "Titanium", Dial = "Roman", CaseFinish = "Silver", Jewels = 15 }; return (ActionResult)new OkObjectResult($"Watch Details: {watchinfo.Manufacturer}, {watchinfo.CaseType}, {watchinfo.Bezel}, {watchinfo.Dial}, {watchinfo.CaseFinish}, {watchinfo.Jewels}"); } return new BadRequestObjectResult("Please provide a watch model in the query string");
Этот код считывает параметр
model
из строки запроса в HTTP-запросе и возвращает сведения об этой модели часов. В этом примере кода мы создали фиктивные данные, возвращаемыеwatchinfo
независимо от значенияmodel
. Функция возвращает ответ, содержащий эти сведения. Или, если HTTP-запрос не содержит строку запроса, функция возвращает сообщение об ошибке. В реальном примере вы будете использоватьmodel
значение для поиска правильногоwatchinfo
возвращаемого значения.
Тестирование функции Azure локально
На панели команд выберите Отладка>Начать отладку.
Visual Studio создаст приложение-функцию Azure и запустит среду выполнения Функций Azure. Откроется окно вывода, в котором при запуске среды выполнения отображаются сообщения. Когда среда выполнения будет готова, отображается список функций HTTP и URL-адрес, который можно использовать для активации каждой функции.
Откройте веб-браузер и введите URL-адрес, отображаемый в окне среды выполнения. URL-адрес по умолчанию —
http://localhost:7071/api/WatchInfo?model=abc
это url-адрес, который мы используем в этом упражнении. Запрос активируетWatchInfo
функцию и передает модельabc
в качестве параметра строки запроса. В веб-браузере должны отображаться фиктивные сведения, созданные функцией.Введите URL-адрес
http://localhost:7071/api/WatchInfo
. Этот запрос не содержит строку запроса. Триггер возвращает ответ об ошибке, и в веб-браузере отображается сообщениеPlease provide a watch model in the query string
.Закройте веб-браузер, но оставьте работать приложение-функцию Azure.
В Visual Studio установите точку останова в строке кода, который извлекает модель из строки запроса.
Перезапустите веб-браузер и введите URL-адрес без строки запроса,
http://localhost:7071/api/WatchInfo
.Visual Studio выделяет код в точке останова, где выполнение приостанавливается.
В Visual Studio нажмите клавишу F10, чтобы обойти оператор в точке останова.
На вкладке Видимые окна отладчика убедитесь, что переменная
model
имеет значениеnull
. Переменная показывает это значение, так как строка запроса не содержит параметр модели.Еще раз нажмите клавишу F10 и убедитесь, что управление переходит к инструкции, которая возвращает объект
BadRequestObjectResult
.Нажмите клавишу F5, чтобы продолжить выполнение метода, и вернитесь к веб-браузеру. Должно отобразиться то же сообщение об ошибке.
В веб-браузере введите URL-адрес со строкой запроса и параметром модели. Выполните шаги по функции в отладчике и убедитесь, что модель получена правильно. Переменная
model
должна быть заполнена значением параметра, а сведения о модели должны возвращаться в виде объектаOkObjectResult
.В строке меню выберите Отладка>Остановить отладку.
В этом упражнении вы узнали, как расширение средств Функции Azure в Visual Studio упрощает создание приложения-функции Azure, позволяя использовать знакомые средства для создания и отладки кода.