Udostępnij za pośrednictwem


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

W tym artykule dowiesz się, jak tworzyć wysoce skalowalne interfejsy API za pomocą usługi Azure Functions, dostosowując wyzwalacz HTTP do obsługi określonych akcji w projekcie interfejsu API. Usługa Azure Functions zawiera kolekcję wbudowanych wyzwalaczy i powiązań HTTP, co ułatwia tworzenie punktu końcowego w różnych językach, w tym Node.js, C#i nie tylko. Możesz również przygotować się do rozwoju interfejsu API, integrując go z serwerami proxy usługi Azure Functions i konfigurując pozorne interfejsy API. Ponieważ te zadania są wykonywane w środowisku obliczeniowym bezserwerowym usługi Functions, nie musisz martwić się o skalowanie zasobów. Zamiast tego 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

  • Narzędzie do testowania HTTP, które zapewnia bezpieczeństwo danych. Aby uzyskać więcej informacji, zobacz Narzędzia do testowania HTTP.

W tym artykule użyto jako punktu początkowego zasobów utworzonych w sekcji Tworzenie pierwszej funkcji w witrynie Azure Portal. Jeśli jeszcze tego nie zrobiono, wykonaj teraz te kroki, aby utworzyć aplikację funkcji.

Po utworzeniu tej aplikacji funkcji możesz wykonać procedury opisane w tym artykule.

Logowanie się do platformy Azure

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

Dostosowywanie funkcji HTTP

Domyślnie należy skonfigurować funkcję wyzwalacza HTTP tak, aby akceptowała dowolną metodę HTTP. W tej sekcji zmodyfikujesz funkcję tak, aby odpowiadała tylko na żądania GET za pomocą polecenia /api/hello. Możesz użyć domyślnego adresu URL, https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>:

  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.

    Zrzut ekranu przedstawiający sposób edytowania ustawień wyzwalacza HTTP funkcji.

  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

    Ponieważ ustawienie globalne obsługuje /api prefiks ścieżki podstawowej w szablonie trasy, nie musisz go tutaj ustawiać.

  3. Wybierz pozycję Zapisz.

Aby uzyskać więcej informacji na temat dostosowywania funkcji HTTP, zobacz Omówienie wyzwalaczy HTTP i powiązań usługi Azure Functions.

Testowanie interfejsu API

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

  1. Na stronie Funkcja 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 funkcja 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 Enter, aby potwierdzić, że funkcja działa. Powinna zostać wyświetlona odpowiedź "Hello John".

  6. Możesz również wywołać punkt końcowy za pomocą innej metody HTTP, aby potwierdzić, że funkcja nie jest wykonywana. W przypadku metod HTTP innych niż GET należy użyć bezpiecznego narzędzia do testowania HTTP.

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 definiuje się tak, 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 utworzyć wiele źródeł interfejsu API w jedną powierzchnię interfejsu API, która jest łatwiejsza dla klientów do użytku, i jest przydatna, 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 usługi Azure Functions, zobacz [Praca ze starszymi serwerami proxy].

Uwaga

Serwery proxy usługi Azure Functions 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 opisane w temacie Tworzenie aplikacji funkcji, aby utworzyć nową aplikację funkcji, w której tworzysz 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. Rozwiń węzeł Ustawienia, a następnie wybierz pozycję Zmienne środowiskowe.

  3. Wybierz kartę Ustawienia aplikacji, na której są przechowywane pary klucz/wartość.

  4. Wybierz pozycję + Dodaj , aby utworzyć nowe ustawienie. Wprowadź HELLO_HOST dla nazwy i ustaw wartość na host 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 odwołujesz się do tego ustawienia w konfiguracji.

    Uwaga

    Zaleca się użycie ustawień aplikacji dla konfiguracji hosta, aby zapobiec trwale zakodowanej zależności środowiska serwera proxy. Korzystanie z ustawień aplikacji oznacza możliwość przenoszenia konfiguracji serwera proxy między środowiskami i zastosowanie ustawień aplikacji specyficznych dla środowiska.

  5. Wybierz pozycję Zastosuj , aby zapisać nowe ustawienie. Na karcie Ustawienia aplikacji wybierz pozycję Zastosuj, a następnie wybierz pozycję Potwierdź, aby ponownie uruchomić aplikację funkcji.

Tworzenie serwera proxy na frontonie

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

  2. W menu po lewej stronie rozwiń węzeł Funkcje, 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

    Zrzut ekranu przedstawiający ustawienia na stronie Nowy serwer proxy.

    Ponieważ serwery proxy usługi Azure Functions nie udostępniają prefiksu /api ścieżki podstawowej, należy uwzględnić go w szablonie trasy. Składnia %HELLO_HOST% odwołuje się do utworzonego wcześniej ustawienia aplikacji. Rozpoznany adres URL wskazuje 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 autoryzacją użyj polecenia: 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 implementowania zaplecza. W dalszej części programowania możesz utworzyć nową aplikację funkcji, która obsługuje tę logikę, i przekierować do niego serwer proxy:

  1. Aby utworzyć ten pozorny interfejs API, utwórz nowy serwer proxy, tym razem przy użyciu edytora usługi App Service. Aby rozpocząć, przejdź do aplikacji funkcji w witrynie Azure Portal. Wybierz pozycję Funkcje platformy, a następnie wybierz pozycję Edytor usługi App Service w obszarze Narzędzia programistyczne.

    Edytor usługi App Service zostanie otwarty na nowej karcie.

  2. Wybierz proxies.json w okienku po lewej stronie. 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 uzyskać więcej informacji na temat tego pliku, zobacz Zaawansowana konfiguracja serwerów proxy.

    Plik proxies.json powinien wyglądać następująco:

    {
        "$schema": "http://json.schemastore.org/proxies",
        "proxies": {
            "HelloProxy": {
                "matchCondition": {
                    "route": "/api/remotehello"
                },
                "backendUri": "https://%HELLO_HOST%/api/hello"
            }
        }
    }
    
  3. Dodaj 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 , GetUserByNamektóry pomija backendUri właściwość . Zamiast wywoływać inny zasób, modyfikuje domyślną odpowiedź z serwerów proxy usługi Azure Functions przy użyciu zastąpienia odpowiedzi. Możesz również użyć przesłonięć żądań i odpowiedzi przy użyciu adresu URL zaplecza. Ta technika jest przydatna w przypadku serwera proxy do starszego systemu, w którym może być konieczne zmodyfikowanie nagłówków, parametrów zapytania itd. Aby uzyskać więcej informacji na temat przesłonięć żądań i odpowiedzi, zobacz Modyfikowanie żądań i odpowiedzi.

  4. Przetestuj <YourProxyApp>.azurewebsites.net/api/users/{username} pozorny interfejs API, wywołując punkt końcowy za pomocą przeglądarki lub ulubionego klienta REST. Zastąp ciąg {username} wartością ciągu reprezentującą nazwę użytkownika.

W tym artykule przedstawiono sposób tworzenia i dostosowywania interfejsu API za pomocą usługi Azure Functions. Przedstawiono również sposób łączenia wielu interfejsów API, w tym makiety interfejsów API, razem jako ujednoliconej powierzchni 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.

Aby uzyskać więcej informacji na temat tworzenia interfejsu API: