Övning – Skapa en funktion lokalt med core tools

Slutförd

Med Azure Functions Core Tools kan du utveckla funktioner lokalt på din egen dator genom att:

  • Skapa de filer och mappar som krävs för ett funktionsprojekt.
  • Tillhandahålla en Functions-värd som körs lokalt från rotkatalogen i projektet.

Du bestämmer dig för att börja arbeta lokalt med Azure Functions genom att utveckla en funktion som beräknar enkelt intresse. Så småningom kan du skapa mer komplexa funktioner som fungerar tillsammans och anropar andra tjänster och databaser. Det är en bra början att använda Core Tools för att skapa en funktion som utför en grundläggande låneberäkning. Du vill också prova att köra funktionen på din egen dator innan du publicerar den till Azure. Du kan göra allt från Azure Cloud Shell med core tools.

Azure Cloud Shell levereras med Core Tools, Azure CLI och en redigerare som du kan använda för att skriva kod. Välj Aktivera sandbox-miljön ovan innan du fortsätter.

Skapa en lokal Azure Functions-projekt

I den här övningen använder du Cloud Shell för att utveckla din första JavaScript-funktion med Core Tools. Cloud Shell har redan rätt versioner av både Core Tools och Node.js installerade.

  1. Från rotmappen kör du func init för att skapa ett funktionsprojekt i en ny loan-wizard mapp.

    func init loan-wizard
    
  2. När du uppmanas att välja en arbetskörning anger du 3 för noden.

  3. När du uppmanas att välja ett språk anger du 1 för javascript.

    Utdata visar de filer som skrivs till disken, inklusive följande filer:

    • host.json stöder konfiguration på appnivå för både körningsinstansen och specifika typer av utlösare och bindningar.
    • local.settings.json anger lokala beteenden och programinställningar (lokala miljövariabler).
    • package.json är en JavaScript-specifik fil som håller reda på paket du installerar och använder i din kod.
    • .gitignore och extensions.json är konfigurationsfiler som används av Git-versionskontrollverktyget respektive Visual Studio Code. Du kan ignorera dem för tillfället.

Skapa en HTTP-utlöst funktion

Det är dags att skapa din funktion!

  1. I Cloud Shell navigerar du till den nya loan-wizard katalogen.

    cd ~/loan-wizard
    
  2. Kör func new för att starta guiden för att skapa funktionen.

    func new
    
  3. När du uppmanas att välja en mall anger du 7 för HTTP-utlösare.

  4. När du uppmanas att ange ett funktionsnamn för HTTP-utlösaren anger du simple-interest.

  5. Kör följande kommando för att öppna Cloud Shell-redigeraren.

    code .
    

    Screenshot showing the simple-interest folder with the function.json file open in Cloud Shell code editor.

    Guiden skapar en ny fil i funktionsprojektet under src/functions kallas simple-interest.js, som har standardmallinnehåll. Den här koden stöder programmeringsmodellen Node.js v4 för Azure Functions. Ta en stund att utforska projektfilerna med hjälp av redigeraren. Skärmbilden visar den expanderade mappen med simple-interest.js öppen i redigeraren.

Implementera funktionen ”simple-interest”

Standardfunktionsimplementeringen som Core Tools skapade åt oss i simple-interest.js söker efter indata som anropas name i frågesträngen eller brödtexten i den inkommande HTTP-begäran och returnerar strängen Hello, [name]. Det är en bra illustration av hur du använder en HTTP-utlösare, men du vill ersätta koden med kod som beräknar enkel ränta från tre indataparametrar.

  1. I redigerarens filfönster expanderar du mappen src>functions och väljer simple-interest.js för att öppna filen i redigeraren.

  2. Ersätt det fullständiga innehållet i simple-interest.js med följande kod:

    const { app } = require('@azure/functions');
    
    app.http('simple-interest', {
        methods: ['GET','POST'],
        authLevel: 'anonymous',
        handler: async (request, context) => {
            const principal = parseFloat(request.query.get('principal'));
            const rate = parseFloat(request.query.get('rate'));
            const term = parseFloat(request.query.get('term'));
    
          if ([principal, rate, term].some(isNaN)) {
            // If any empty or non-numeric values, return a 400 response with an
            // error message
            return {
              status: 400,
              body: "Please supply principal, rate and term in the query string"
            };
          } else {
            // Otherwise set the response body to the product of the three values
            return { body: principal * rate * term };
          }
        }
    });
    

    Det här skriptet söker efter parametrar med namnet principal, rateoch term i frågesträngen för HTTP-begäran. Den returnerar sedan resultatet av den enkla ränteberäkningen (principal * rate * term).

  3. Spara filen genom att trycka på Ctrl+S och stäng redigeraren genom att trycka på Ctrl+Q.

Kör funktionen i Cloud Shell

Om du vill köra den nya funktionen lokalt för att prova den använder func start du för att starta Functions-körningen (func.exe) i en bakgrundsprocess så att du kan använda kommandoraden medan den körs. Använd sedan ett kommandoradsverktyg, curl, för att interagera med funktionen.

Om du använder Core Tools från din egen dator kan du bara använda curl från ett andra terminalfönster eller en webbläsare. Utdata från Core Tools visas i realtid i det första terminalfönstret. I Cloud Shell är du begränsad till en enda terminal, så du måste köra Core Tools (func.exe) i en bakgrundsprocess.

  1. Kör följande kommando för att starta Functions-värden oövervakat i bakgrunden.

    func start &> ~/output.txt &
    

    Precis som med func newbör Cloud Shell fortfarande finnas i loan-wizard katalogen.

    Functions-värden skriver nu utdata till filen ~/output.txt. Du kan fortsätta att använda kommandoraden medan den körs.

    ps Använd kommandot för att kontrollera att func processen körs.

  2. Ange följande kommando för att visa utdataloggen.

    code ~/output.txt
    

    I utdata visas ett meddelande om att listor Functions: simple-interest: är tillgängliga både som GET och EN POST HTTP-begäran http://localhost:7071/api/simple-interest.

    Kommentar

    Om du ser ett felmeddelande väljer du Ctrl+C för att stoppa värden. Kontrollera att innehållet i kodfilen är detsamma som exemplet.

    Den här localhost-URL:en publiceras inte på webben, den är endast tillgänglig från verktyg som körs i Cloud Shell-sessionen.

  3. Stäng redigeraren genom att välja Ctrl+Q.

  4. Kör följande kommando för att skicka en HTTP GET-begäran till funktionen som körs lokalt.

    curl "http://localhost:7071/api/simple-interest" -w "\n"
    

    Utdata, Please supply principal, rate and term in the query string, anger att vår funktion anropades och kan returnera ett svar, men du anropar den inte som avsett. Du måste ange parametrarna som en del av HTTP-begäran.

  5. Anropa funktionen igen. Den här gången anger du ett värde för var och en av frågesträngsparametrarna.

    curl "http://localhost:7071/api/simple-interest?principal=5000&rate=.035&term=36" -w "\n"
    

    Den här gången är 6300utdata . Funktionen fungerar som förväntat!

  6. Ange följande kommando för att visa utdataloggen igen.

    code ~/output.txt
    

    Efter startloggposterna visas en tidsstämplad uppsättning loggposter för varje gång du anropade funktionen med curl:

    [2024-02-20T06:25:56.700Z] Executing 'Functions.simple-interest' (Reason='This function was programmatically called via the host APIs.', Id=5daf20c3-f204-41bb-a5b9-021acaf17c04)
    [2024-02-20T06:25:56.893Z] Executed 'Functions.simple-interest' (Succeeded, Id=5daf20c3-f204-41bb-a5b9-021acaf17c04, Duration=228ms)
    
    
  7. Stäng redigeraren genom att välja Ctrl+Q.