Een HTTP-eindpunt aanpassen in Azure Functions
In dit artikel leert u hoe u zeer schaalbare API's bouwt met Azure Functions door een HTTP-trigger aan te passen om specifieke acties in uw API-ontwerp af te handelen. Azure Functions bevat een verzameling ingebouwde HTTP-triggers en -bindingen, waarmee u eenvoudig een eindpunt in verschillende talen kunt maken, waaronder Node.js, C# en meer. U bereidt u ook voor om uw API te laten groeien door deze te integreren met Azure Functions-proxy's en mock-API's in te stellen. Omdat deze taken worden uitgevoerd boven op de serverloze rekenomgeving van Functions, hoeft u zich geen zorgen te maken over het schalen van resources. In plaats daarvan kunt u zich richten op uw API-logica.
Belangrijk
Azure Functions-proxy's is een verouderde functie voor versies 1.x tot en met 3.x van de Azure Functions-runtime. Ondersteuning voor proxy's kan opnieuw worden ingeschakeld in versie 4.x, zodat u uw functie-apps kunt upgraden naar de nieuwste runtimeversie. Zo snel mogelijk moet u overschakelen naar de integratie van uw functie-apps met Azure API Management. Met API Management kunt u profiteren van een uitgebreidere set functies voor het definiëren, beveiligen, beheren en geld verdienen met uw op Functions gebaseerde API's. Zie API Management-integratie voor meer informatie.
Vereisten
- Een HTTP-testprogramma waarmee uw gegevens veilig blijven. Zie HTTP-testhulpprogramma's voor meer informatie.
In dit artikel worden de resources gebruikt die zijn gemaakt in Uw eerste functie maken in Azure Portal. Doorloop nu deze stappen om de functie-app te maken, als u dit nog niet hebt gedaan.
Nadat u deze functie-app hebt gemaakt, kunt u de procedures in dit artikel volgen.
Aanmelden bij Azure
Meld u met uw Azure-account aan bij Azure Portal.
Uw HTTP-functie aanpassen
Standaard configureert u uw HTTP-triggerfunctie om een HTTP-methode te accepteren. In deze sectie wijzigt u de functie zodat deze alleen reageert op GET-aanvragen met /api/hello
. U kunt de standaard-URL gebruiken: https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>
Navigeer in de Azure-portal naar uw functie. Selecteer Integratie in het linkermenu en selecteer vervolgens HTTP (req) onder Trigger.
Gebruik de HTTP-triggerinstellingen zoals opgegeven in de volgende tabel.
Veld Voorbeeldwaarde Beschrijving Routesjabloon hallo Hiermee wordt bepaald welke route wordt gebruikt om deze functie aan te roepen Autorisatieniveau Anoniem Optioneel: dit maakt uw functie toegankelijk zonder een API-sleutel Geselecteerde HTTP-methoden GET Hiermee is het alleen geselecteerde HTTP-methoden toegestaan om deze functie aan te roepen Omdat een globale instelling het voorvoegsel van het
/api
basispad in de routesjabloon afhandelt, hoeft u deze hier niet in te stellen.Selecteer Opslaan.
Zie het overzicht van HTTP-triggers en bindingen van Azure Functions voor meer informatie over het aanpassen van HTTP-functies.
Uw API testen
Test vervolgens uw functie om te zien hoe deze werkt met het nieuwe API-oppervlak:
Selecteer code en test op de pagina Functie in het menu links.
Selecteer Functie-URL ophalen in het bovenste menu en kopieer de URL. Controleer of uw functie nu gebruikmaakt van het
/api/hello
pad.Kopieer de URL naar een nieuw browsertabblad of de rest-client van uw voorkeur. Browsers gebruiken STANDAARD GET.
Voeg parameters toe aan de querytekenreeks in uw URL. Bijvoorbeeld:
/api/hello/?name=John
.Druk op Enter om te bevestigen dat uw functie werkt. U zou het antwoord 'Hallo John' moeten zien.
U kunt het eindpunt ook aanroepen met een andere HTTP-methode om te bevestigen dat de functie niet wordt uitgevoerd. Voor andere HTTP-methoden dan GET moet u een beveiligd HTTP-testhulpprogramma gebruiken.
Overzicht van Azure Functions-proxy's
In de volgende sectie geeft u uw API weer via een proxy. Met Azure Functions-proxy's kunt u aanvragen doorsturen naar andere resources. U definieert een HTTP-eindpunt zoals u zou doen met een HTTP-trigger. In plaats van code te schrijven die moet worden uitgevoerd wanneer dat eindpunt wordt aangeroepen, geeft u echter een URL op voor een externe implementatie. Hierdoor kunt u meerdere API-bronnen samenstellen in één API-oppervlak, wat eenvoudiger is voor clients om te gebruiken en is handig als u uw API wilt bouwen als microservices.
Een proxy kan naar elke HTTP-bron verwijzen, zoals:
- Azure Functions
- API Apps in Azure App Service
- Docker-containers in App Service in Linux
- Elke andere gehoste API
Zie [Werken met verouderde proxy's] voor meer informatie over Azure Functions-proxy's.
Notitie
Azure Functions-proxy's is beschikbaar in Azure Functions-versies 1.x tot en met 3.x.
Uw eerste proxy maken
In deze sectie maakt u een nieuwe proxy, die als front-end fungeert voor uw algemene API.
De front-endomgeving instellen
Herhaal de stappen in Een functie-app maken om een nieuwe functie-app te maken waarin u uw proxy maakt. De URL van deze nieuwe app fungeert als de front-end voor onze API en de functie-app die u eerder hebt bewerkt, fungeert als back-end:
Navigeer naar uw nieuwe front-end functie-app in de portal.
Vouw Instellingen uit en selecteer vervolgens Omgevingsvariabelen.
Selecteer het tabblad App-instellingen , waar sleutel-waardeparen worden opgeslagen.
Selecteer + Toevoegen om een nieuwe instelling te maken. Voer HELLO_HOST in voor de naam en stel de waarde in op de host van uw back-endfunctie-app, zoals
<YourBackendApp>.azurewebsites.net
.Deze waarde maakt deel uit van de URL die u eerder hebt gekopieerd toen u de HTTP-functie hebt getest. U verwijst later naar deze instelling in de configuratie.
Notitie
Het is raadzaam om app-instellingen voor de hostconfiguratie te gebruiken om een in code vastgelegde omgevingsafhankelijkheid voor de proxy te voorkomen. Het gebruik van app-instellingen betekent dat u de proxyconfiguratie tussen omgevingen kunt verplaatsen en de omgevingsspecifieke app-instellingen worden toegepast.
Selecteer Toepassen om de nieuwe instelling op te slaan. Selecteer Toepassen op het tabblad App-instellingen en selecteer Bevestigen om de functie-app opnieuw op te starten.
Een proxy maken op de front-end
Ga terug naar uw front-endfunctie-app in de portal.
Vouw in het linkermenu Functies uit, selecteer Proxy's en selecteer vervolgens Toevoegen.
Op de pagina Nieuwe proxy gebruikt u de instellingen in de volgende tabel en selecteert u Maken.
Veld Voorbeeldwaarde Description Naam HelloProxy Een beschrijvende naam die alleen wordt gebruikt voor beheer Routesjabloon /api/remotehello Hiermee wordt bepaald welke route wordt gebruikt om deze proxy aan te roepen URL van back-end https://%HELLO_HOST%/api/hello Geeft het eindpunt aan waarnaar de aanvraag moet worden geproxied Omdat Azure Functions-proxy's het voorvoegsel van het
/api
basispad niet opgeven, moet u deze opnemen in de routesjabloon. De%HELLO_HOST%
syntaxis verwijst naar de app-instelling die u eerder hebt gemaakt. De opgeloste URL verwijst naar de oorspronkelijke functie.Probeer uw nieuwe proxy uit door de proxy-URL te kopiëren en te testen in de browser of met uw favoriete HTTP-client:
- Voor een anonieme functie gebruikt u:
https://YOURPROXYAPP.azurewebsites.net/api/remotehello?name="Proxies"
. - Voor een functie met autorisatie gebruikt u:
https://YOURPROXYAPP.azurewebsites.net/api/remotehello?code=YOURCODE&name="Proxies"
.
- Voor een anonieme functie gebruikt u:
Een mock-API maken
Vervolgens gebruikt u een proxy om een mock-API voor uw oplossing te maken. Met deze proxy kan clientontwikkeling worden voortgezet, zonder dat de back-end volledig hoeft te worden geïmplementeerd. Later in ontwikkeling kunt u een nieuwe functie-app maken die deze logica ondersteunt en uw proxy ernaar omleiden:
Als u deze mock-API wilt maken, maakt u deze keer een nieuwe proxy met behulp van de App Service-editor. Ga eerst naar uw functie-app in Azure Portal. Selecteer Platformfuncties en selecteer vervolgens App Service Editor onder Ontwikkelhulpprogramma's.
De App Service-editor wordt geopend op een nieuw tabblad.
Selecteer
proxies.json
in het linkerdeelvenster. In dit bestand wordt de configuratie voor al uw proxy's opgeslagen. Als u een van de Functions-implementatiemethoden gebruikt, onderhoudt u dit bestand in broncodebeheer. Zie Geavanceerde configuratie van proxy's voor meer informatie over dit bestand.Uw proxies.json-bestand moet er als volgt uitzien:
{ "$schema": "http://json.schemastore.org/proxies", "proxies": { "HelloProxy": { "matchCondition": { "route": "/api/remotehello" }, "backendUri": "https://%HELLO_HOST%/api/hello" } } }
Voeg uw mock-API toe. Vervang uw proxies.json bestand door de volgende code:
{ "$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" ] } } } } }
Met deze code wordt een nieuwe proxy toegevoegd,
GetUserByName
waardoor debackendUri
eigenschap wordt weggelaten. In plaats van een andere resource aan te roepen, wordt het standaardantwoord van Azure Functions-proxy's gewijzigd met behulp van een onderdrukking van een antwoord. U kunt ook onderdrukkingen van aanvragen en antwoorden gebruiken met een back-end-URL. Deze techniek is handig wanneer u proxyt naar een verouderd systeem, waar u mogelijk headers, queryparameters enzovoort moet wijzigen. Zie Aanvragen en antwoorden wijzigen voor meer informatie over onderdrukkingen van aanvragen en antwoorden.Test uw mock-API door het
<YourProxyApp>.azurewebsites.net/api/users/{username}
eindpunt aan te roepen met een browser of uw favoriete REST-client. Vervang {username} door een tekenreekswaarde die een gebruikersnaam vertegenwoordigt.
Gerelateerde inhoud
In dit artikel hebt u geleerd hoe u een API bouwt en aanpast met Azure Functions. U hebt ook geleerd hoe u meerdere API's, waaronder mock-API's, samen kunt brengen als een geïntegreerd API-oppervlak. U kunt deze technieken gebruiken om meer en minder complexe API's te ontwikkelen, die alle worden uitgevoerd op het serverloze rekenmodel dat wordt geleverd door Azure Functions.
Voor meer informatie over het ontwikkelen van uw API: