Cvičení – vytvoření a otestování jednoduché funkce Azure Functions místně pomocí sady Visual Studio
Visual Studio poskytuje vynikající prostředí pro vytváření a testování aplikace Funkcí Azure. Funkci Azure Functions můžete vyvíjet místně a ověřit, že funguje správně, než ji nasadíte do cloudu.
Ve scénáři online webových stránek luxusních hodinek existuje požadavek na funkci, která vrací podrobné informace o hodinkách, když je dáno číslo modelu hodinek. Data, která potřebujete vrátit, zahrnují: výrobce, typ krytu (plný, průhledný nebo vyrytý), kryt, styl číselníku, dokončení případu, počet šperků a tak dále.
V tomto cvičení implementujete a otestujete verzi této funkce místně pomocí sady Visual Studio.
Poznámka:
Než začnete s tímto cvičením, ujistěte se, že máte nainstalovanou sadu VS 2022, spolu s rozšířeními úloh Web &cloud ASP.NET a vývojem pro web a vývoj pro Azure.
Vytvoření aplikace Funkcí Azure
Vytvořte aplikaci Funkcí Azure pomocí šablony Azure Functions .
Spusťte Instalační program pro Visual Studio a na úvodní stránce sady Visual Studio 2022 vyberte Upravit.
Ujistěte se, že jsou vybrané a dostupné ASP.NET a vývoj pro web a vývoj pro Azure (pokud při stahování nevyberete možnost Instalovat), a pak vyberte Zavřít.
Na úvodní stránce sady Visual Studio 2022 vyberte Spustit.
V nabídce Začínáme vyberte Vytvořit nový projekt. Objeví se stránka Vytvořit nový projekt.
Vyhledejte šablonu Azure Functions nebo se posuňte na šablonu a pak vyberte Další.
Objeví se stránka Konfigurovat nový projekt. Zadejte následující hodnoty.
Pole Hodnota Název projektu WatchPortalFunction Místo Vyberte umístění pro uložení projektu tak, že přejdete do složky nebo vytvoříte složku na místním počítači. Název řešení Přijmout WatchPortalFunction (výchozí). Umístění řešení a projektu do stejného adresáře Nezaškrtnuto (NENÍ vybráno). Toto nastavení zajišťuje správnou strukturu složek pro tento modul. Vyberte Další.
Zobrazí se stránka Další informace .
Vyberte následující hodnoty.
Pole Hodnota Dotnet version *.NET 6.0 (dlouhodobá podpora) Aktivační událost funkce Trigger HTTP Použití Azurite pro účet úložiště runtime (AzureWebJobsStorage) Kontroloval Povolení Dockeru Nezaškrtnuto Úroveň autorizace Anonymní Pokud se v oznámení sady Visual Studio zobrazí, že jsou aktualizace připravené, vyberte Aktualizovat.
Vyberte Vytvořit.
Visual Studio vytvoří
WatchPortalFunction
projekt a zobrazí souborFunction1.cs
zdrojového kódu aplikace Functions v okně editoru kódu. Soubor obsahuje kód pro třídu s názvemFunction1
.Jak je znázorněno v následujícím ukázkovém kódu,
Function1
třída obsahuje často používaný kód ze šablony triggeru HTTP. MetodaRun
je anotována atributem[FunctionName ("Function1")]
. V předchozí lekci jsme zjistili, že často používané parametry pro metoduRun
jsouHttpRequest
objekt obsahující podrobnosti požadavku, který funkci aktivoval, a záznam protokolu trasování pro záznam informací o trasování.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"); } } }
Vytvoření funkce Azure Functions WatchInfo
V nabídce Zobrazit vyberte Průzkumník řešení. V okně Průzkumník řešení klikněte pravým tlačítkem na projekt WatchPortalFunction Azure Functions a v místní nabídce vyberte Přidat>novou funkci Azure Functions.
V okně Přidat novou položku – WatchPortalFunction zvolte Funkce Azure Functions. Do pole Název zadejte WatchInfo.cs a pak vyberte Přidat.
V okně Nová funkce Azure Functions – WatchInfo zvolte Trigger HTTP. V rozevíracím seznamu Úroveň autorizace vyberte Anonymní a pak vyberte Přidat.
Visual Studio vytvoří novou funkci a
Run
metoda se označí atributem[FunctionName("WatchInfo")]
.V těle
Run
funkce odstraňte kód za řádkemlog.LogInformation
. Výsledek by měl vypadat takto.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."); } } }
Do textu
Run
metody zalog.LogInformation
řádek vložte následující kód.// 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");
Tento kód načte
model
parametr z řetězce dotazu v požadavku HTTP a vrátí podrobnosti pro tento model kukátků. V tomto ukázkovém kódu jsme vytvořili fiktivníwatchinfo
data, která se vrátí bez ohledu na hodnotumodel
. Funkce vrátí odpověď, která obsahuje tyto podrobnosti. Pokud požadavek HTTP neobsahuje řetězec dotazu, vrátí funkce chybovou zprávu. V reálném příkladu byste použilimodel
hodnotu k vyhledání správnéwatchinfo
hodnoty, která se má vrátit.
Místní otestování funkce Azure Functions
Na panelu příkazů vyberte >Spustit ladění.
Visual Studio sestaví aplikaci Azure Function App a spustí modul runtime Azure Functions. Otevře se okno Výstup pro zobrazení zpráv při spuštění modulu runtime. Jakmile je modul runtime připravený, zobrazí se seznam funkcí HTTP a adresy URL, které můžete použít k aktivaci jednotlivých funkcí.
Otevřete webový prohlížeč a zadejte adresu URL zobrazenou v okně modulu runtime. Výchozí adresa URL je
http://localhost:7071/api/WatchInfo?model=abc
, takže se jedná o adresu URL, kterou používáme v tomto cvičení. Požadavek aktivujeWatchInfo
funkci a předá modelabc
jako parametr řetězce dotazu. Webový prohlížeč by měl zobrazit fiktivní podrobnosti vygenerované funkcí.Zadejte adresu URL
http://localhost:7071/api/WatchInfo
. Tento požadavek nezahrnuje řetězec dotazu. Trigger vrátí chybovou odpověď a webový prohlížeč zobrazí zprávuPlease provide a watch model in the query string
.Zavřete webový prohlížeč, ale nechte aplikaci Funkcí Azure spuštěnou.
V sadě Visual Studio nastavte zarážku na řádku kódu, který načítá model z řetězce dotazu.
Restartujte webový prohlížeč a zadejte adresu URL bez řetězce
http://localhost:7071/api/WatchInfo
dotazu .Visual Studio zvýrazní kód na zarážce, kde je pozastaveno provádění.
V sadě Visual Studio přejděte k příkazu na zarážce stisknutím klávesy F10.
Na kartě Automatické položky v okně ladicího programu ověřte, zda
model
jenull
proměnná . Proměnná zobrazuje tuto hodnotu, protože řetězec dotazu neobsahuje parametr modelu.Znovu stiskněte klávesu F10 a ověřte, že ovládací prvek přejde na příkaz, který vrací
BadRequestObjectResult
objekt.Pokud chcete pokračovat ve spuštění metody a vrátit se do webového prohlížeče, stiskněte klávesu F5. Měla by se zobrazit stejná chybová zpráva.
Ve webovém prohlížeči zadejte adresu URL s řetězcem dotazu a parametrem modelu. Projděte funkci v ladicím programu a ověřte, že je model načten správně. Proměnná
model
by měla být naplněná hodnotou parametru a podrobnosti modelu by se měly vrátit jako objektOkObjectResult
.Na řádku nabídek vyberte Ladění>zastavit ladění.
V tomto cvičení jste viděli, jak rozšíření Azure Functions Tools v sadě Visual Studio zjednodušuje vytváření aplikace funkcí Azure tím, že vám umožní používat známé nástroje k sestavení a ladění kódu.