Anpassen eines HTTP-Endpunkts in Azure Functions
In diesem Artikel erfahren Sie, wie Sie hochgradig skalierbare APIs mit Azure Functions erstellen, indem Sie einen HTTP-Trigger anpassen, um bestimmte Aktionen in Ihrem API-Design zu behandeln. Zu Azure Functions gehört eine Sammlung von integrierten HTTP-Triggern und -Bindungen, die Ihnen das Erstellen eines Endpunkts in verschiedenen Sprachen wie Node.js und C# erleichtern. Sie bereiten sich auch auf eine Erweiterung Ihrer API vor, indem Sie sie in Azure Functions-Proxys integrieren und Modell-APIs einrichten. Da diese Aufgaben zusätzlich zur serverlosen Functions-Compute-Umgebung ausgeführt werden, müssen Sie sich keine Gedanken über die Skalierung von Ressourcen machen. Stattdessen können Sie sich ganz auf Ihre API-Logik konzentrieren.
Wichtig
Azure Functions-Proxys sind ein Legacyfeature für die Versionen 1.x bis 3.x der Azure Functions-Runtime. Die Unterstützung für Proxys kann in Version 4.x wieder aktiviert werden, sodass Sie für Ihre Funktions-Apps ein Upgrade auf die neueste Runtimeversion erfolgreich durchführen können. Wechseln Sie so bald wie möglich zur Integration Ihrer Funktions-Apps in Azure API Management. Mit API Management können Sie einen umfassenderen Featuresatz für die Definition, Sicherung, Verwaltung und Monetarisierung Ihrer Functions-basierten APIs nutzen. Weitere Informationen finden Sie unter API Management-Integration.
Informationen zum erneuten Aktivieren der Proxyunterstützung in der Functions-Version 4.x finden Sie unter Erneutes Aktivieren von Proxys in Functions v4.x.
Voraussetzungen
- Ein HTTP-Testtool, das Ihre Daten schützt. Weitere Informationen finden Sie unter HTTP-Testtools.
In diesem Artikel werden als Ausgangspunkt die Ressourcen verwendet, die unter Erstellen Ihrer ersten Funktion im Azure-Portal erstellt wurden. Führen Sie nun diese Schritte zum Erstellen Ihrer Funktionen-App durch, sofern dies noch nicht geschehen ist.
Nachdem Sie diese Funktions-App erstellt haben, können Sie die in diesem Artikel beschriebenen Verfahren ausführen.
Anmelden bei Azure
Melden Sie sich mit Ihrem Azure-Konto beim Azure-Portal an.
Anpassen der HTTP-Funktion
Standardmäßig konfigurieren Sie Ihre HTTP-Triggerfunktion so, dass sie alle HTTP-Methoden akzeptiert. In diesem Abschnitt ändern Sie die Funktion, sodass sie nur auf GET-Anforderungen mit /api/hello
antwortet. Sie können die Standard-URL https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>
verwenden:
Navigieren Sie im Azure-Portal zu Ihrer Funktion. Wählen Sie im Menü auf der linken Seite Integration aus, und wählen Sie dann HTTP (req) unter Trigger aus.
Verwenden Sie die HTTP-Triggereinstellungen, wie in der folgenden Tabelle angegeben.
Feld Beispielwert BESCHREIBUNG Routenvorlage hello Bestimmt, welche Route verwendet wird, um diese Funktion aufzurufen Autorisierungsstufe Anonym Optional: Ermöglicht den Zugriff auf Ihre Funktion ohne einen API-Schlüssel Ausgewählte HTTP-Methoden GET Bestimmt, dass nur ausgewählte HTTP-Methoden zum Aufrufen dieser Funktion verwendet werden können Da eine globale Einstellung das Basispfadpräfix
/api
in der Routenvorlage behandelt, müssen Sie es hier nicht festlegen.Wählen Sie Speichern.
Weitere Informationen zum Anpassen von HTTP-Funktionen finden Sie in der Übersicht zu HTTP-Triggern und -Bindungen in Azure Functions.
Testen der API
Als Nächstes testen Sie die Funktion, um zu sehen, wie sie mit der neuen API-Oberfläche funktioniert:
Wählen Sie auf der Funktionsseite im linken Menü Programmieren und testen aus.
Wählen Sie aus dem oberen Menü Funktions-URL abrufen aus, und kopieren Sie die URL. Vergewissern Sie sich, dass Ihre Funktion jetzt den Pfad
/api/hello
verwendet.Kopieren Sie die URL in eine neue Browserregisterkarte oder in Ihren bevorzugten REST-Client. Browser verwenden standardmäßig GET.
Fügen Sie der Abfragezeichenfolge in der URL Parameter hinzu. Beispiel:
/api/hello/?name=John
.Drücken Sie die EINGABETASTE, um zu bestätigen, dass Ihre Funktion funktioniert. Daraufhin sollte die Antwort „Hello John“ angezeigt werden.
Sie können auch den Endpunkt mit einer anderen HTTP-Methode aufrufen, um sicherzustellen, dass die Funktion nicht ausgeführt wird. Für andere HTTP-Methoden als GET müssen Sie ein sicheres HTTP-Testtool verwenden.
Übersicht über Proxy
Im nächsten Abschnitt zeigen Sie Ihre API über einen Proxy an. Mit Azure-Funktionsproxys können Sie Anforderungen an andere Ressourcen weiterleiten. Sie definieren einen HTTP-Endpunkt wie bei einem HTTP-Trigger. Anstatt aber Code zu schreiben, der ausgeführt wird, wenn dieser Endpunkt aufgerufen wird, geben Sie eine URL für eine Remoteimplementierung an. Dadurch können Sie mehrere API-Quellen in einer einzelnen API-Oberfläche zusammenstellen, die Clients einfacher nutzen können. Dies ist nützlich, wenn Sie Ihre API als Microservices erstellen möchten.
Ein Proxy kann auf HTTP-Ressourcen wie die folgenden verweisen:
- Azure-Funktionen
- API-Apps in Azure App Service
- Docker-Container in App Service unter Linux
- Andere gehostete APIs
Weitere Informationen über Azure-Funktionsproxys finden Sie unter [Arbeiten mit Legacyproxys].
Hinweis
Azure-Funktionsproxys sind in den Azure Functions-Versionen 1.x bis 3.x verfügbar.
Erstellen Ihres ersten Proxys
In diesem Abschnitt erstellen Sie einen neuen Proxy, der als Front-End für Ihre übergeordnete API dient.
Einrichten der Front-End-Umgebung
Wiederholen Sie die Schritte unter Erstellen einer Funktions-App, um eine neue Funktions-App zu erstellen, in der Sie den Proxy erstellen. Die URL dieser neuen App dient als Front-End für unsere API, und die Funktions-App, die Sie zuvor bearbeitet haben, dient als Back-End.
Navigieren Sie zu Ihrer neuen Front-End-Funktionen-App im Portal.
Erweitern Sie Einstellungen, und wählen Sie dann Umgebungsvariablen aus.
Wählen Sie die Registerkarte App-Einstellungen aus, in der Schlüssel-Wert-Paare gespeichert sind.
Wählen Sie + Hinzufügen aus, um eine neue Einstellung zu erstellen. Geben Sie HELLO_HOST für den Namen ein, und legen Sie den Wert auf den Host Ihrer Back-End-Funktions-App fest, z. B.
<YourBackendApp>.azurewebsites.net
.Dieser Wert ist Teil der URL, die Sie zuvor kopiert haben, als Sie die HTTP-Funktion getestet haben. Sie geben diese Einstellung später in der Konfiguration an.
Hinweis
Es wird empfohlen, App-Einstellungen für die Hostkonfiguration zu verwenden, um eine hartcodierte Umgebungsabhängigkeit für den Proxy zu verhindern. Die Verwendung dieser App-Einstellungen bedeutet, dass Sie die Proxykonfiguration zwischen Umgebungen verschieben können, und die umgebungsspezifischen App-Einstellungen werden angewendet.
Wählen Sie Anwenden aus, um die neue Einstellung zu speichern. Wählen Sie auf der Registerkarte App-Einstellungen Anwenden aus, und wählen Sie dann Bestätigen aus, um die Funktions-App neu zu starten.
Erstellen eines Proxys auf dem Front-End
Navigieren Sie zurück zu Ihrer Front-End-Funktions-App im Portal.
Erweitern Sie im linken Menü Funktionen, wählen Sie Proxys aus, und wählen Sie dann Hinzufügen aus.
Verwenden Sie auf der Seite Neuer Proxy die Einstellungen in der folgenden Tabelle, und wählen Sie dann Erstellen aus.
Feld Beispielwert BESCHREIBUNG Name HelloProxy Ein Anzeigename für die Verwaltung Routenvorlage /api/remotehello Bestimmt, welche Route verwendet wird, um diesen Proxy aufzurufen Back-End-URL https://%HELLO_HOST%/api/hello Gibt den Endpunkt an, der für die Anforderung als Proxy dienen soll Da Azure Functions-Proxys das Basispfadpräfix
/api
nicht bereitstellen, müssen Sie es in die Routenvorlage einschließen. Die%HELLO_HOST%
-Syntax verweist auf die App-Einstellung, die Sie zuvor erstellt haben. Die aufgelöste URL verweist auf die ursprüngliche Funktion.Probieren Sie Ihren neuen Proxy aus, indem Sie die Proxy-URL kopieren und im Browser oder mit Ihrem bevorzugten HTTP-Client testen:
- Für eine anonyme Funktion verwenden Sie
https://YOURPROXYAPP.azurewebsites.net/api/remotehello?name="Proxies"
. - Für eine Funktion mit Autorisierung verwenden Sie
https://YOURPROXYAPP.azurewebsites.net/api/remotehello?code=YOURCODE&name="Proxies"
.
- Für eine anonyme Funktion verwenden Sie
Erstellen einer Modell-API
Als Nächstes verwenden Sie einen Proxy, um eine Modell-API für die Lösung zu erstellen. Durch diesen Proxy kann die Cliententwicklung fortgesetzt werden, ohne das Back-End vollständig zu implementieren. Sie können später bei der Entwicklung eine neue Funktions-App erstellen, die diese Logik unterstützt, und den Proxy entsprechend umleiten.
Um diese Modell-API zu erstellen, erstellen Sie einen neuen Proxy. Dieses Mal verwenden Sie den App Service-Editor. Navigieren Sie zunächst zu Ihrer Funktions-App im Portal. Wählen Sie Plattformfeatures und anschließend App Service-Editor unter Entwicklungstools.
Der App Service-Editor wird auf einer neuen Registerkarte geöffnet.
Wählen Sie im linken Bereich die Option
proxies.json
aus. In dieser Datei wird die Konfiguration für alle Ihre Proxys gespeichert. Wenn Sie eine der Functions-Bereitstellungsmethoden verwenden, verwalten Sie diese Datei in der Quellcodeverwaltung. Weitere Informationen zu dieser Datei finden Sie unter Erweiterte Konfiguration für Proxys.Ihre proxies.json-Datei sollte wie folgt angezeigt werden:
{ "$schema": "http://json.schemastore.org/proxies", "proxies": { "HelloProxy": { "matchCondition": { "route": "/api/remotehello" }, "backendUri": "https://%HELLO_HOST%/api/hello" } } }
Fügen Sie Ihre simulierte API hinzu. Ersetzen Sie die Datei proxies.json durch den folgenden 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" ] } } } } }
Dieser Code fügt einen neuen Proxy (
GetUserByName
) hinzu, der diebackendUri
-Eigenschaft auslässt. Statt eine andere Ressource aufzurufen, wird die Standardantwort von Azure-Funktionsproxys geändert, indem die Antwort überschrieben wird. Sie können auch das Überschreiben von Anforderungen und Antworten mit einer Back-End-URL verwenden. Diese Technik ist nützlich, wenn Sie Proxyfunktionen zu einem Legacysystem verwenden, wobei Sie möglicherweise Header, Abfrageparameter usw. ändern müssen. Weitere Informationen zu Außerkraftsetzungen von Anforderungen und Antworten finden Sie unter Ändern von Anforderungen und Antworten.Testen Sie Ihre Modell-API durch Aufrufen des Endpunkts
<YourProxyApp>.azurewebsites.net/api/users/{username}
mit einem Browser oder Ihrem bevorzugten REST-Client. Ersetzen Sie {username} durch einen Zeichenfolgenwert, der einen Benutzernamen darstellt.
Zugehöriger Inhalt
In diesem Artikel haben Sie erfahren, wie eine API für Azure Functions erstellt und angepasst wird. Außerdem haben Sie gelernt, wie Sie mehrere APIs (darunter Modell-APIs) zu einer einheitlichen API-Oberfläche verknüpften können. Sie können diese Techniken verwenden, um APIs von beliebiger Komplexität zu erstellen, während Sie das von Azure Functions bereitgestellte serverlose Computemodell nutzen.
Weitere Informationen zum Entwickeln Ihrer API: