Dostosowywanie punktu końcowego HTTP w usłudze Azure Functions

Z tego artykułu dowiesz się, jak usługa Azure Functions umożliwia tworzenie wysoce skalowalnych interfejsów API. Usługa Azure Functions zawiera kolekcję wbudowanych wyzwalaczy i powiązań HTTP, które ułatwiają tworzenie punktu końcowego w różnych językach, w tym Node.js, C#i nie tylko. W tym artykule dostosujesz wyzwalacz HTTP w celu obsługi określonych akcji w projekcie interfejsu API. Przygotujesz się również do rozwoju interfejsu API, integrując go z serwerami proxy usługi Azure Functions i konfigurując pozorne interfejsy API. Te zadania są wykonywane na podstawie bezserwerowego środowiska obliczeniowego usługi Functions, więc nie musisz martwić się o skalowanie zasobów — możesz po prostu skupić się na logice interfejsu API.

Ważne

Serwery proxy usługi Azure Functions to starsza funkcja dla wersji 1.x do 3.x środowiska uruchomieniowego usługi Azure Functions. Obsługę serwerów proxy można ponownie włączyć w wersji 4.x, aby pomyślnie uaktualnić aplikacje funkcji do najnowszej wersji środowiska uruchomieniowego. Jak najszybciej należy przełączyć się na integrację aplikacji funkcji z usługą Azure API Management. Usługa API Management umożliwia korzystanie z pełniejszego zestawu funkcji do definiowania i zabezpieczania interfejsów API opartych na usłudze Functions oraz zarządzania nimi i zarabiania na nich. Aby uzyskać więcej informacji, zobacz Integracja usługi API Management.

Aby dowiedzieć się, jak ponownie włączyć obsługę serwerów proxy w usłudze Functions w wersji 4.x, zobacz Ponowne włączanie serwerów proxy w usłudze Functions w wersji 4.x.

Wymagania wstępne

Do wykonania czynności przedstawionych w tym temacie są wymagane zasoby utworzone w temacie Tworzenie pierwszej funkcji w witrynie Azure Portal. Jeśli jeszcze ich nie utworzono, wykonaj teraz te kroki, aby utworzyć aplikację funkcji.

Wynikowa funkcja będzie używana w pozostałej części tego artykułu.

Logowanie się do platformy Azure

Zaloguj się w witrynie Azure Portal przy użyciu danych konta Azure.

Dostosowywanie funkcji HTTP

Domyślnie funkcja wyzwalacza HTTP jest skonfigurowana do akceptowania dowolnej metody HTTP. Możesz również użyć domyślnego adresu URL, https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>. W tej sekcji zmodyfikujesz funkcję tak, aby odpowiadała tylko na żądania GET za pomocą polecenia /api/hello.

  1. Przejdź do swojej funkcji w witrynie Azure Portal. Wybierz pozycję Integracja w menu po lewej stronie, a następnie wybierz pozycję HTTP (req) w obszarze Wyzwalacz.

    Dostosowywanie funkcji HTTP

  2. Użyj ustawień wyzwalacza HTTP, jak określono w poniższej tabeli.

    Pole Przykładowa wartość opis
    Szablon trasy hello Określa trasę używaną do wywoływania tej funkcji
    Poziom autoryzacji Anonimowe Opcjonalnie: sprawia, że funkcja jest dostępna bez klucza interfejsu API
    Wybrane metody HTTP GET Umożliwia wywoływanie tej funkcji tylko przy użyciu wybranych metod HTTP

    Prefiks ścieżki podstawowej nie został uwzględniony /api w szablonie trasy, ponieważ jest on obsługiwany przez ustawienie globalne.

  3. Wybierz pozycję Zapisz.

Aby uzyskać więcej informacji na temat dostosowywania funkcji HTTP, zobacz Powiązania HTTP usługi Azure Functions.

Testowanie interfejsu API

Następnie przetestuj funkcję, aby zobaczyć, jak działa z nową powierzchnią interfejsu API:

  1. Na stronie funkcji wybierz pozycję Kod i testowanie z menu po lewej stronie.

  2. Wybierz pozycję Pobierz adres URL funkcji z górnego menu i skopiuj adres URL. Upewnij się, że używa teraz ścieżki /api/hello .

  3. Skopiuj adres URL do nowej karty przeglądarki lub preferowanego klienta REST.

    Przeglądarki domyślnie używają polecenia GET.

  4. Dodaj parametry do ciągu zapytania w adresie URL.

    Na przykład /api/hello/?name=John.

  5. Naciśnij klawisz Enter, aby potwierdzić, że działa. Powinna zostać wyświetlona odpowiedź "Hello John".

  6. Możesz również spróbować wywołać punkt końcowy za pomocą innej metody HTTP, aby potwierdzić, że funkcja nie jest wykonywana. W tym celu należy użyć klienta REST, takiego jak cURL, Postman lub Fiddler.

Omówienie serwerów proxy

W następnej sekcji udostępnisz interfejs API za pośrednictwem serwera proxy. Serwery proxy usługi Azure Functions umożliwiają przekazywanie żądań do innych zasobów. Punkt końcowy HTTP jest definiowany tak samo jak w przypadku wyzwalacza HTTP. Jednak zamiast pisać kod do wykonania po wywołaniu tego punktu końcowego, należy podać adres URL implementacji zdalnej. Dzięki temu można tworzyć wiele źródeł interfejsu API w jednej powierzchni interfejsu API, co jest łatwe do użytku przez klientów, co jest przydatne, jeśli chcesz utworzyć interfejs API jako mikrousługi.

Serwer proxy może wskazywać dowolny zasób HTTP, na przykład:

Aby dowiedzieć się więcej na temat serwerów proxy, zobacz Praca z serwerami proxy usługi Azure Functions.

Uwaga

Serwery proxy są dostępne w usłudze Azure Functions w wersji 1.x do 3.x.

Tworzenie pierwszego serwera proxy

W tej sekcji utworzysz nowy serwer proxy, który służy jako fronton do ogólnego interfejsu API.

Konfigurowanie środowiska frontonu

Powtórz kroki tworzenia aplikacji funkcji, aby utworzyć nową aplikację funkcji, w której utworzysz serwer proxy. Adres URL tej nowej aplikacji służy jako fronton dla naszego interfejsu API, a wcześniej edytowana aplikacja funkcji służy jako zaplecze.

  1. Przejdź do nowej aplikacji funkcji frontonu w portalu.

  2. Wybierz pozycję Konfiguracja i wybierz pozycję Aplikacja Ustawienia.

  3. Przewiń w dół do pozycji Ustawienia aplikacji, gdzie są przechowywane pary klucz/wartość, i utwórz nowe ustawienie za pomocą klucza HELLO_HOST. Ustaw dla niego wartość hosta aplikacji funkcji zaplecza, na przykład <YourBackendApp>.azurewebsites.net. Ta wartość jest częścią adresu URL skopiowanego wcześniej podczas testowania funkcji HTTP. Później będziesz odwoływać się do tego ustawienia w konfiguracji.

    Uwaga

    Ustawienia aplikacji są zalecane w przypadku konfiguracji hosta, aby uniknąć zakodowanej zależności środowiska dla serwera proxy. Korzystanie z ustawień aplikacji oznacza możliwość przenoszenia konfiguracji serwera proxy między środowiskami i zastosowanie ustawień aplikacji specyficznych dla środowiska.

  4. Wybierz pozycję Zapisz.

Tworzenie serwera proxy we frontonie

  1. Wróć do aplikacji funkcji frontonu w portalu.

  2. W menu po lewej stronie wybierz pozycję Serwery proxy, a następnie wybierz pozycję Dodaj.

  3. Na stronie Nowy serwer proxy użyj ustawień w poniższej tabeli, a następnie wybierz pozycję Utwórz.

    Pole Przykładowa wartość opis
    Nazwa/nazwisko HelloProxy Przyjazna nazwa używana tylko do zarządzania
    Szablon trasy /api/remotehello Określa trasę używaną do wywoływania tego serwera proxy
    Adres URL zaplecza https://%HELLO_HOST%/api/hello Określa punkt końcowy, do którego powinno być przekazywane żądanie

    Tworzenie serwera proxy

    Serwery proxy usługi Azure Functions nie udostępniają prefiksu /api ścieżki podstawowej, który musi być uwzględniony w szablonie trasy. Składnia %HELLO_HOST% odwołuje się do utworzonego wcześniej ustawienia aplikacji. Rozpoznany adres URL będzie wskazywał oryginalną funkcję.

  4. Wypróbuj nowy serwer proxy, kopiując adres URL serwera proxy i testując go w przeglądarce lub przy użyciu ulubionego klienta HTTP:

    • W przypadku funkcji anonimowej użyj polecenia: https://YOURPROXYAPP.azurewebsites.net/api/remotehello?name="Proxies".
    • W przypadku funkcji z użyciem autoryzacji: https://YOURPROXYAPP.azurewebsites.net/api/remotehello?code=YOURCODE&name="Proxies".

Tworzenie makiety interfejsu API

Następnie użyjesz serwera proxy do utworzenia pozornego interfejsu API dla rozwiązania. Ten serwer proxy umożliwia postęp tworzenia aplikacji klienta bez konieczności pełnego zaimplementowania zaplecza. W dalszej części programowania możesz utworzyć nową aplikację funkcji, która obsługuje tę logikę i przekierowuje do niego serwer proxy.

Aby utworzyć ten pozorny interfejs API, utworzymy nowy serwer proxy, tym razem przy użyciu edytora usługi App Service. Aby rozpocząć, przejdź do aplikacji funkcji w portalu. Wybierz pozycję Funkcje platformy, a następnie w obszarze Narzędzia programistyczne znajdź edytor usługi App Service. Edytor usługi App Service zostanie otwarty na nowej karcie.

Wybierz pozycję proxies.json na lewym pasku nawigacyjnym. Ten plik przechowuje konfigurację wszystkich serwerów proxy. Jeśli używasz jednej z metod wdrażania usługi Functions, zachowasz ten plik w kontroli źródła. Aby dowiedzieć się więcej na temat tego pliku, zobacz Konfiguracja zaawansowana serwerów proxy.

Jeśli do tej pory wykonano następujące czynności, proxies.json powinny wyglądać następująco:

{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "HelloProxy": {
            "matchCondition": {
                "route": "/api/remotehello"
            },
            "backendUri": "https://%HELLO_HOST%/api/hello"
        }
    }
}

Następnie dodasz pozorny interfejs API. Zastąp plik proxies.json następującym kodem:

{
    "$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"
                    ]
                }
            }
        }
    }
}

Ten kod dodaje nowy serwer proxy , GetUserByNamebez backendUri właściwości . Zamiast wywoływania innego zasobu, modyfikuje on odpowiedź domyślną z serwerów proxy przy użyciu funkcji przesłonięcia odpowiedzi. Przesłonięcia żądań i odpowiedzi mogą być również używane z adresem URL zaplecza. Ta technika jest przydatna podczas proxy do starszego systemu, gdzie może być konieczne zmodyfikowanie nagłówków, parametrów zapytania itd. Aby dowiedzieć się więcej na temat przesłonięć żądań i odpowiedzi, zobacz Modyfikowanie żądań i odpowiedzi w serwerach proxy.

Przetestuj makietę interfejsu API, wywołując metodę <YourProxyApp>.azurewebsites.net/api/users/{username} za pomocą przeglądarki lub ulubionego klienta REST. Koniecznie zastąp parametr {username} wartością ciągu reprezentującą nazwę użytkownika.

Następne kroki

W tym artykule przedstawiono sposób tworzenia i dostosowywania interfejsu API w usłudze Azure Functions. Przedstawiono również sposób łączenia wielu interfejsów API, w tym makiet, w celu uzyskania ujednoliconego środowiska interfejsu API. Za pomocą tych technik możesz tworzyć interfejsy API o dowolnej złożoności, pracując na bezserwerowym modelu obliczeniowym udostępnianym przez usługę Azure Functions.

Podczas dalszego programowania interfejsu API może być przydatna następująca dokumentacja: