Oefening: een functie lokaal maken met Behulp van Core Tools

Voltooid

Met Azure Functions Core Tools kunt u functies lokaal op uw eigen computer ontwikkelen door:

  • Het maken van de bestanden en mappen die nodig zijn voor een functions-project.
  • Het leveren van een Functions-host die lokaal wordt uitgevoerd vanuit de hoofdmap van uw project.

U besluit om uw werk lokaal te starten met Azure Functions door een functie te ontwikkelen die eenvoudig belang berekent. Uiteindelijk kunt u complexere functies maken die samenwerken en andere services en databases aanroepen. Het gebruik van Core Tools om een functie te bouwen die een eenvoudige berekening van een lening uitvoert, is een goed begin. U wilt uw functie ook uitvoeren op uw eigen computer voordat u deze publiceert naar Azure. U kunt dit allemaal doen vanuit Azure Cloud Shell met behulp van Core Tools.

De Azure Cloud Shell wordt geleverd met Core Tools, Azure CLI en een editor die u kunt gebruiken om code te schrijven. Zorg ervoor dat u de sandbox hierboven activeren selecteert voordat u verdergaat.

Een lokaal Azure Functions-project maken

In deze oefening gebruikt u Cloud Shell om uw eerste JavaScript-functie te ontwikkelen met behulp van Core Tools. Cloud Shell heeft al de juiste versies van zowel Core Tools als Node.js geïnstalleerd.

  1. Voer func init vanuit de hoofdmap uit om een functions-project in een nieuwe loan-wizard map te maken.

    func init loan-wizard
    
  2. Wanneer u wordt gevraagd om een werkrolruntime te selecteren, voert u 3 voor het knooppunt in.

  3. Wanneer u wordt gevraagd om een taal te selecteren, voert u 1 in voor Javascript.

    De uitvoer bevat de bestanden die naar de schijf worden geschreven, met inbegrip van deze bestanden:

    • host.json ondersteunt configuratie op app-niveau voor zowel het runtime-exemplaar als specifieke trigger- en bindingstypen.
    • local.settings.json stelt lokaal gedrag en toepassingsinstellingen (lokale omgevingsvariabelen) in.
    • package.json is een JavaScript-bestand waarin een overzicht wordt bijgehouden van alle pakketten die u installeert en gebruikt in uw code.
    • .gitignore en extensions.json zijn configuratiebestanden die respectievelijk worden gebruikt door het hulpprogramma voor git-versiebeheer en Visual Studio Code. U kunt ze voorlopig negeren.

Een met HTTP geactiveerde functie maken

Het is tijd om uw functie te maken.

  1. Navigeer in Cloud Shell naar de nieuwe loan-wizard map.

    cd ~/loan-wizard
    
  2. Voer uit func new om de wizard voor het maken van de functie te starten.

    func new
    
  3. Wanneer u wordt gevraagd om een sjabloon te selecteren, voert u 7 in voor HTTP-trigger.

  4. Wanneer u wordt gevraagd om een functienaam op te geven voor http-trigger, voert u in simple-interest.

  5. Voer de volgende opdracht uit om de Cloud Shell-editor te openen.

    code .
    

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

    De wizard maakt een nieuw bestand in het functions-project onder src/functions de naam simple-interest.js, met standaardsjablooninhoud. Deze code ondersteunt het Node.js v4-programmeermodel voor Azure Functions. Neem nu even de tijd om de projectbestanden te verkennen met behulp van de editor. In de schermopname ziet u de uitgevouwen map met simple-interest.js geopend in de editor.

De functie simple-interest implementeren

De standaardfunctie-implementatie die Core Tools voor ons heeft gemaakt in simple-interest.js zoekt naar invoer die wordt aangeroepen name in de querytekenreeks of de hoofdtekst van de binnenkomende HTTP-aanvraag en retourneert de tekenreeks Hello, [name]. Het is een goede illustratie van het gebruik van een HTTP-trigger, maar u wilt die code vervangen door code waarmee eenvoudige rente wordt berekend op basis van drie invoerparameters.

  1. Vouw in het deelvenster BESTANDEN van de editor de map src-functies> uit en selecteer simple-interest.js om het bestand in de editor te openen.

  2. Vervang de volledige inhoud van simple-interest.js door de volgende code:

    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 };
          }
        }
    });
    

    Dit script zoekt naar parameters met de naam principal, rateen term in de queryreeks van de HTTP-aanvraag. Vervolgens wordt het resultaat van de eenvoudige renteberekening (principal * rate * term) geretourneerd.

  3. Sla het bestand op door op Ctrl+S te drukken en sluit de editor door op Ctrl+Q te drukken.

De functie uitvoeren in Cloud Shell

Als u de nieuwe functie lokaal wilt uitvoeren om deze uit te proberen, func start gebruikt u om de Functions-runtime (func.exe) in een achtergrondproces te starten, zodat u de opdrachtregel kunt gebruiken terwijl deze wordt uitgevoerd. Gebruik vervolgens een opdrachtregelprogramma curlom met de functie te communiceren.

Als u Core Tools vanaf uw eigen computer gebruikt, kunt u gewoon vanuit een tweede terminalvenster of een webbrowser gebruiken curl . De uitvoer die door Core Tools wordt geproduceerd, wordt in realtime weergegeven in het eerste terminalvenster. In Cloud Shell bent u beperkt tot één terminal, dus u moet Core Tools (func.exe) uitvoeren in een achtergrondproces.

  1. Voer de volgende opdracht uit om de Functions-host op de achtergrond te starten.

    func start &> ~/output.txt &
    

    Net als bij func newCloud Shell moet Cloud Shell zich nog steeds in de loan-wizard map bevinden.

    De Functions-host schrijft nu de uitvoer naar het bestand ~/output.txt. U kunt de opdrachtregel blijven gebruiken terwijl deze wordt uitgevoerd.

    Gebruik de ps opdracht om te controleren of het func proces wordt uitgevoerd.

  2. Voer de volgende opdracht in om het uitvoerlogboek weer te geven.

    code ~/output.txt
    

    In de uitvoer ziet u een bericht met lijsten Functions: simple-interest: die beschikbaar zijn als GET- en POST HTTP-aanvraag http://localhost:7071/api/simple-interest.

    Notitie

    Als u een foutbericht ziet, selecteert u Ctrl+C om de host te stoppen. Zorg ervoor dat de inhoud van het codebestand hetzelfde is als het voorbeeld.

    Deze localhost-URL is niet gepubliceerd op internet, maar is alleen toegankelijk vanuit hulpprogramma's die worden uitgevoerd in uw Cloud Shell-sessie.

  3. Sluit de editor door Ctrl+Q te selecteren.

  4. Voer de volgende opdracht uit om een HTTP GET-aanvraag naar uw lokaal actieve functie te verzenden.

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

    De uitvoer geeft Please supply principal, rate and term in the query stringaan dat de functie is aangeroepen en een antwoord kan retourneren, maar u roept deze niet zoals bedoeld aan. U moet de parameters opgeven als onderdeel van de HTTP-aanvraag.

  5. Roep de functie opnieuw aan. Geef deze keer een waarde op voor elk van de queryreeksparameters.

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

    Deze keer is 6300de uitvoer . Uw functie werkt zoals verwacht!

  6. Voer de volgende opdracht in om het uitvoerlogboek opnieuw weer te geven.

    code ~/output.txt
    

    Nadat de vermeldingen in het opstartlogboek zijn toegevoegd, hebt u een tijdstempelset logboekvermeldingen toegevoegd voor elke keer dat u de functie aangeroepen met 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. Sluit de editor door Ctrl+Q te selecteren.