Teilen über


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:

  1. 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.

    Screenshot, der zeigt, wie die HTTP-Triggereinstellungen einer Funktion bearbeitet werden

  2. 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.

  3. 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:

  1. Wählen Sie auf der Funktionsseite im linken Menü Programmieren und testen aus.

  2. 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.

  3. Kopieren Sie die URL in eine neue Browserregisterkarte oder in Ihren bevorzugten REST-Client. Browser verwenden standardmäßig GET.

  4. Fügen Sie der Abfragezeichenfolge in der URL Parameter hinzu. Beispiel: /api/hello/?name=John.

  5. Drücken Sie die EINGABETASTE, um zu bestätigen, dass Ihre Funktion funktioniert. Daraufhin sollte die Antwort „Hello John“ angezeigt werden.

  6. 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:

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.

  1. Navigieren Sie zu Ihrer neuen Front-End-Funktionen-App im Portal.

  2. Erweitern Sie Einstellungen, und wählen Sie dann Umgebungsvariablen aus.

  3. Wählen Sie die Registerkarte App-Einstellungen aus, in der Schlüssel-Wert-Paare gespeichert sind.

  4. 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.

  5. 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

  1. Navigieren Sie zurück zu Ihrer Front-End-Funktions-App im Portal.

  2. Erweitern Sie im linken Menü Funktionen, wählen Sie Proxys aus, und wählen Sie dann Hinzufügen aus.

  3. 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

    Screenshot der Einstellungen auf der Seite „Neuer Proxy“

    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.

  4. 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".

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.

  1. 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.

  2. 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"
            }
        }
    }
    
  3. 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 die backendUri-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.

  4. 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.

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: