Dela via


Anpassa en HTTP-slutpunkt i Azure Functions

I den här artikeln får du lära dig hur du skapar mycket skalbara API:er med Azure Functions genom att anpassa en HTTP-utlösare för att hantera specifika åtgärder i din API-design. Azure Functions innehåller en samling inbyggda HTTP-utlösare och bindningar, vilket gör det enkelt att skapa en slutpunkt på olika språk, inklusive Node.js, C#med mera. Du förbereder dig också för att utöka ditt API genom att integrera det med Azure Functions-proxyservrar och konfigurera falska API:er. Eftersom dessa uppgifter utförs ovanpå den serverlösa functions-beräkningsmiljön behöver du inte bry dig om att skala resurser. I stället kan du bara fokusera på API-logiken.

Viktigt!

Azure Functions-proxyservrar är en äldre funktion för version 1.x till 3.x av Azure Functions-körningen. Stöd för proxyservrar kan återaktiveras i version 4.x så att du kan uppgradera funktionsapparna till den senaste körningsversionen. Så snart som möjligt bör du byta till att integrera dina funktionsappar med Azure API Management. Med API Management kan du dra nytta av en mer komplett uppsättning funktioner för att definiera, skydda, hantera och tjäna pengar på dina Functions-baserade API:er. Mer information finns i API Management-integrering.

Information om hur du återaktiverar stöd för proxyservrar i Functions version 4.x finns i Återaktivera proxyservrar i Functions v4.x.

Förutsättningar

  • Ett HTTP-testverktyg som skyddar dina data. Mer information finns i HTTP-testverktyg.

I den här artikeln används som utgångspunkt de resurser som skapades i Skapa din första funktion i Azure Portal. Om du inte redan har gjort detta måste du slutföra stegen för att skapa din funktionsapp.

När du har skapat den här funktionsappen kan du följa procedurerna i den här artikeln.

Logga in på Azure

Logga in på Azure Portal med ditt Azure-konto.

Anpassa din HTTP-funktion

Som standard konfigurerar du http-utlösarfunktionen så att den accepterar alla HTTP-metoder. I det här avsnittet ändrar du funktionen så att den endast svarar på GET-begäranden med /api/hello. Du kan använda standard-URL:en: https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>

  1. Gå till din funktion i Azure-portalen. Välj Integrering på den vänstra menyn och välj sedan HTTP (req) under Utlösare.

    Skärmbild som visar hur du redigerar HTTP-utlösarinställningarna för en funktion.

  2. Använd HTTP-utlösarinställningarna enligt nedanstående tabell.

    Fält Exempelvärde beskrivning
    Flödesmall hallå Avgör vilket flöde som används för att anropa den här funktionen
    Auktoriseringsnivå Anonym Valfritt: Gör din funktion tillgänglig utan API-nyckel
    Valda HTTP-metoder GET Tillåter endast de valda HTTP-metoderna att användas för att anropa den här funktionen

    Eftersom en global inställning hanterar bassökvägsprefixet /api i routningsmallen behöver du inte ange det här.

  3. Välj Spara.

Mer information om hur du anpassar HTTP-funktioner finns i Översikt över HTTP-utlösare och bindningar för Azure Functions.

Testa ditt API

Testa sedan funktionen för att se hur den fungerar med den nya API-ytan:

  1. På sidan Funktion väljer du Kod + Test på den vänstra menyn.

  2. Välj Hämta funktions-URL på den översta menyn och kopiera URL:en. Bekräfta att funktionen nu använder /api/hello sökvägen.

  3. Kopiera URL:en till en ny webbläsarflik eller önskad REST-klient. Webbläsare använder GET som standard.

  4. Lägg till parametrar i frågesträngen i url:en. Exempel: /api/hello/?name=John

  5. Tryck på Retur för att bekräfta att funktionen fungerar. Du bör se svaret "Hello John".

  6. Du kan också anropa slutpunkten med en annan HTTP-metod för att bekräfta att funktionen inte körs. För andra HTTP-metoder än GET måste du använda ett säkert HTTP-testverktyg.

Översikt över proxyservrar

I nästa avsnitt visar du api:et via en proxy. Med Azure Functions-proxyservrar kan du vidarebefordra begäranden till andra resurser. Du definierar en HTTP-slutpunkt på samma sätt som med en HTTP-utlösare. Men i stället för att skriva kod som ska köras när slutpunkten anropas anger du en URL till en fjärrimplementering. På så sätt kan du skapa flera API-källor i en enda API-yta, vilket är enklare för klienter att använda, och är användbart om du vill skapa ditt API som mikrotjänster.

En proxy kan peka på en HTTP-resurs, till exempel:

Mer information om Azure Functions-proxyservrar finns i [Arbeta med äldre proxyservrar].

Kommentar

Azure Functions-proxyservrar är tillgängliga i Azure Functions-versionerna 1.x till 3.x.

Skapa din första proxy

I det här avsnittet skapar du en ny proxy som fungerar som en klientdel till ditt övergripande API.

Konfigurera klientdelsmiljön

Upprepa stegen i Skapa en funktionsapp för att skapa en ny funktionsapp där du skapar proxyn. Den här nya appens URL fungerar som klientdel för vårt API, och funktionsappen som du tidigare redigerade fungerar som en serverdel:

  1. Navigera till din nya klientdelsfunktionsapp i portalen.

  2. Expandera Inställningar och välj sedan Miljövariabler.

  3. Välj fliken Appinställningar , där nyckel/värde-par lagras.

  4. Välj + Lägg till för att skapa en ny inställning. Ange HELLO_HOST för dess namn och ange dess värde som värd för serverdelsfunktionsappen, till exempel <YourBackendApp>.azurewebsites.net.

    Det här värdet är en del av den URL som du kopierade tidigare när du testade HTTP-funktionen. Du refererar senare till den här inställningen i konfigurationen.

    Kommentar

    Vi rekommenderar att du använder appinställningar för värdkonfigurationen för att förhindra ett hårdkodat miljöberoende för proxyn. Om du använder programinställningar kan du flytta proxykonfigurationen mellan miljöer, och de miljöspecifika programinställningarna tillämpas.

  5. Välj Använd för att spara den nya inställningen. På fliken Appinställningar väljer du Använd och sedan Bekräfta för att starta om funktionsappen.

Skapa en proxy på klientdelen

  1. Gå tillbaka till klientdelens funktionsapp i portalen.

  2. På den vänstra menyn expanderar du Functions, väljer Proxyservrar och sedan Lägg till.

  3. På sidan Ny proxy använder du inställningarna i följande tabell och väljer sedan Skapa.

    Fält Exempelvärde beskrivning
    Name HelloProxy Ett eget namn som endast används för hantering
    Flödesmall /api/remotehello Avgör vilket flöde som används för att anropa den här proxyn
    Webbadress för serverdel https://%HELLO_HOST%/api/hello Anger den slutpunkt som begäran ska nå via proxy

    Skärmbild som visar inställningarna på sidan Ny proxy.

    Eftersom Azure Functions-proxyservrar inte tillhandahåller /api bassökvägsprefixet måste du inkludera det i routningsmallen. Syntaxen %HELLO_HOST% refererar till appinställningen som du skapade tidigare. Den lösta URL:en pekar på den ursprungliga funktionen.

  4. Prova din nya proxy genom att kopiera proxy-URL:en och testa den i webbläsaren eller med din favorit-HTTP-klient:

    • För en anonym funktion använder du: https://YOURPROXYAPP.azurewebsites.net/api/remotehello?name="Proxies".
    • För en funktion med auktorisering använder du: https://YOURPROXYAPP.azurewebsites.net/api/remotehello?code=YOURCODE&name="Proxies".

Skapa ett fingerat API

Sedan använder du en proxy för att skapa ett falskt API för din lösning. Den här proxyn gör att klientutvecklingen kan fortsätta utan att behöva implementera serverdelen fullt ut. Senare under utvecklingen kan du skapa en ny funktionsapp som stöder den här logiken och omdirigera proxyn till den:

  1. Skapa det här falska API:et genom att skapa en ny proxy, den här gången med apptjänstredigeraren. Kom igång genom att gå till funktionsappen i Azure Portal. Välj Plattformsfunktioner och välj sedan App Service-redigeraren under Utvecklingsverktyg.

    App Service-redigeraren öppnas på en ny flik.

  2. Välj proxies.json i den vänstra rutan. Den här filen lagrar konfigurationen för alla dina proxyservrar. Om du använder någon av distributionsmetoderna för Functions underhåller du den här filen i källkontrollen. Mer information om den här filen finns i Avancerad konfiguration av proxyservrar.

    Din proxies.json-fil bör visas på följande sätt:

    {
        "$schema": "http://json.schemastore.org/proxies",
        "proxies": {
            "HelloProxy": {
                "matchCondition": {
                    "route": "/api/remotehello"
                },
                "backendUri": "https://%HELLO_HOST%/api/hello"
            }
        }
    }
    
  3. Lägg till ditt falska API. Ersätt din proxies.json-fil med följande kod:

    {
        "$schema": "http://json.schemastore.org/proxies",
        "proxies": {
            "HelloProxy": {
                "matchCondition": {
                    "route": "/api/remotehello"
                },
                "backendUri": "https://%HELLO_HOST%/api/hello"
            },
            "GetUserByName" : {
                "matchCondition": {
                    "methods": [ "GET" ],
                    "route": "/api/users/{username}"
                },
                "responseOverrides": {
                    "response.statusCode": "200",
                    "response.headers.Content-Type" : "application/json",
                    "response.body": {
                        "name": "{username}",
                        "description": "Awesome developer and master of serverless APIs",
                        "skills": [
                            "Serverless",
                            "APIs",
                            "Azure",
                            "Cloud"
                        ]
                    }
                }
            }
        }
    }
    

    Den här koden lägger till en ny proxy, GetUserByName, som utelämnar egenskapen backendUri . I stället för att anropa en annan resurs ändrar den standardsvaret från Azure Functions-proxyservrar med hjälp av en åsidosättning av svar. Du kan också använda åsidosättningar för begäran och svar med en serverdels-URL. Den här tekniken är användbar när du proxy till ett äldre system, där du kan behöva ändra rubriker, frågeparametrar och så vidare. Mer information om åsidosättningar av begäranden och svar finns i Ändra begäranden och svar.

  4. Testa ditt falska API genom att anropa <YourProxyApp>.azurewebsites.net/api/users/{username} slutpunkten med en webbläsare eller din favorit-REST-klient. Ersätt {username} med ett strängvärde som representerar ett användarnamn.

I den här artikeln har du lärt dig hur du skapar och anpassar ett API med Azure Functions. Du har också lärt dig hur du sammanför flera API:er, inklusive falska API:er, som en enhetlig API-yta. Du kan använda de här metoderna för att bygga ut API:er i olika komplexitetsgrader medan de körs på den serverlösa beräkningsmodell som Azure Functions ger.

Mer information om hur du utvecklar ditt API: