Oefening: een Azure-functie lokaal maken en testen met Visual Studio
Visual Studio biedt een uitstekende omgeving voor het maken en testen van een Azure Function-app. U kunt een Azure-functie lokaal ontwikkelen en controleren of deze correct werkt voordat u deze implementeert in de cloud.
In het scenario van de onlinewebsite van het luxe horloge is er een vereiste voor een functie die gedetailleerde informatie over een horloge retourneert wanneer het modelnummer van het horloge wordt gegeven. De gegevens die u nodig hebt, zijn onder andere: de fabrikant, het type kastdeksel (effen, transparant of gegraveerd), de bezel, de stijl van de wijzerplaat, de afwerking van de kast, het aantal uurwerkjuwelen, enzovoort.
In deze oefening implementeert en test u een versie van deze functie lokaal met behulp van Visual Studio.
Notitie
Voordat u aan deze oefening begint, moet Visual Studio 2022 zijn geïnstalleerd, samen met de web- en cloudworkloadextensies ASP.NET en webontwikkeling en Azure-ontwikkeling.
Een Azure-functie-app maken
Een Azure Function-app maken met behulp van een Azure Functions-sjabloon .
Start Visual Studio Installer en selecteer Wijzigen op de startpagina van Visual Studio 2022.
Zorg ervoor dat ASP.NET en webontwikkeling en Azure-ontwikkeling zijn geselecteerd en beschikbaar zijn (als u Installeren niet selecteert tijdens het downloaden) en selecteer vervolgens Sluiten.
Selecteer Starten op de startpagina van Visual Studio 2022.
Selecteer Een nieuw project maken in het menu Aan de slag. De pagina Een nieuw project maken wordt weergegeven.
Zoek naar of blader naar Azure Functions-sjabloon en selecteer Volgende.
De pagina Uw nieuwe project configureren wordt weergegeven. Voer de volgende waarden in.
Veld Waarde Projectnaam WatchPortalFunction Plaats Selecteer een locatie om uw project op te slaan door naar een map te bladeren of door een map op uw lokale computer te maken. naam van oplossing WatchPortalFunction accepteren (standaard). Oplossing en project in dezelfde map plaatsen Uitgeschakeld (NIET geselecteerd). Deze instelling zorgt voor de juiste mapstructuur voor deze module.
Selecteer Volgende.
De pagina Aanvullende informatie wordt weergegeven.
Selecteer de volgende waarden.
Veld Waarde Dotnet-versie *.NET 6.0 (langetermijnondersteuning) Functietrigger Http-trigger Azurite gebruiken voor runtime-opslagaccount (AzureWebJobsStorage) Aangevinkt Docker inschakelen Ongecontroleerde Autorisatieniveau Anoniem Als in een Visual Studio-melding wordt weergegeven dat updates gereed zijn, selecteert u Vernieuwen.
Klik op Maken.
Visual Studio maakt het
WatchPortalFunctionproject en geeft het broncodebestand van de Functions-app weerFunction1.csin het venster van de code-editor. Het bestand bevat de code voor een klasse met de naamFunction1.Zoals wordt weergegeven in de volgende voorbeeldcode, bevat de
Function1klasse standaardcode van de HTTP-triggersjabloon. De methodeRunwordt geannoteerd met het kenmerk[FunctionName ("Function1")]. In de vorige les hebben we geleerd dat de standaardparameters voor de methodeRuneenHttpRequest-object zijn met de details van de aanvraag die de functie heeft geactiveerd en een traceringslogboekvermelding voor het vastleggen van traceringsgegevens.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"); } } }
De Azure-functie WatchInfo maken
Selecteer Solution Explorer in het menu Beeld. Klik in het venster Solution Explorer met de rechtermuisknop op het Azure Functions-project WatchPortalFunction en selecteer in het contextmenuNieuwe Azure-functie>.
Selecteer Azure Function in het venster Nieuw item toevoegen - WatchPortalFunction. Voer in het veld NaamWatchInfo.cs in en selecteer vervolgens Toevoegen.
Selecteer http-trigger in het venster New Azure Function - WatchInfo. Selecteer Anoniem in de vervolgkeuzelijst Autorisatieniveau en selecteer vervolgens Toevoegen.
Visual Studio maakt een nieuwe functie en de
Runmethode wordt geannoteerd met het kenmerk[FunctionName("WatchInfo")].Verwijder in de hoofdtekst van de functie
Runde code na delog.LogInformationregel. Het resultaat moet er als volgt uitzien.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."); } } }Voeg de volgende code in de hoofdtekst van de methode
Runin na de regellog.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");Deze code leest de parameter
modeluit de querytekenreeks in de HTTP-aanvraag en retourneert de details voor dat horlogemodel. In deze voorbeeldcode hebben we dummywatchinfogegevens gemaakt die worden geretourneerd, ongeacht de waarde vanmodel. De functie retourneert een antwoord dat deze details bevat. Als de HTTP-aanvraag geen querytekenreeks bevat, retourneert de functie een foutbericht. In een praktijkvoorbeeld gebruikt u demodel-waarde om de juistewatchinfoop te zoeken en terug te geven.
De Azure-functie lokaal testen
Selecteer foutopsporing starten> op de opdrachtbalk.
Visual Studio bouwt de Azure Function-app en start de Azure Functions-runtime. Er wordt een uitvoervenster geopend om berichten weer te geven wanneer de runtime wordt gestart. Wanneer de runtime gereed is, wordt een lijst met de HTTP-functies en de URL weergegeven die u kunt gebruiken om elke functie te activeren.
Open een webbrowser en voer de URL in die wordt weergegeven in het runtimevenster. De standaard-URL is
http://localhost:7071/api/WatchInfo?model=abc, dus dat is de URL die we in deze oefening gebruiken. De aanvraag activeert deWatchInfofunctie en geeft het modelabcdoor als de queryreeksparameter. In de webbrowser moeten de dummygegevens worden weergegeven die door de functie zijn gegenereerd.
Voer de URL
http://localhost:7071/api/WatchInfoin. Deze aanvraag bevat geen querytekenreeks. De trigger retourneert het foutbericht en de webbrowser geeft het bericht weerPlease provide a watch model in the query string.Sluit de webbrowser, maar laat de Azure Function-app actief.
Stel in Visual Studio een onderbrekingspunt in op de coderegel waarmee het model wordt opgehaald uit de querytekenreeks.
Start de webbrowser opnieuw en voer de URL in zonder de querytekenreeks
http://localhost:7071/api/WatchInfo.Visual Studio markeert de code op het onderbrekingspunt waar de uitvoering is onderbroken.
Druk in Visual Studio op F10 om de declaratie bij het breakpoint over te slaan.
Controleer op het tabblad Automatisch van het foutopsporingsprogramma of de
modelvariabele isnull. De variabele geeft deze waarde weer omdat de queryreeks geen modelparameter bevat.
Druk nogmaals op F10 en controleer of het besturingselement naar de instructie springt die een
BadRequestObjectResultobject retourneert.Druk op F5 om door te gaan met het uitvoeren van de methode en terug te keren naar de webbrowser. Hetzelfde foutbericht moet worden weergegeven.
Voer in de webbrowser de URL in met een querytekenreeks en een modelparameter. Doorloop de functie in het foutopsporingsprogramma en controleer of het model correct is opgehaald. De
modelvariabele moet worden gevuld met de waarde van de parameter en de details van het model dat wordt geretourneerd als eenOkObjectResult-object.Op de menubalk, selecteer Debug>Debugging stoppen.
In deze oefening hebt u gezien hoe de Azure Functions Tools-extensie in Visual Studio de ervaring van het maken van een Azure Function-app vereenvoudigt door vertrouwde hulpprogramma's te gebruiken om uw code te bouwen en fouten op te sporen.