Přizpůsobení koncového bodu HTTP ve službě Azure Functions

V tomto článku se dozvíte, jak azure Functions umožňuje vytvářet vysoce škálovatelná rozhraní API. Azure Functions obsahuje kolekci integrovaných triggerů a vazeb HTTP, které usnadňují vytváření koncového bodu v různých jazycích, včetně Node.js, C# a dalších. V tomto článku přizpůsobíte trigger HTTP tak, aby zpracovával konkrétní akce v návrhu rozhraní API. Připravíte se také na růst rozhraní API tím, že ho integrujete s proxy službami Azure Functions a nastavíte napodobení rozhraní API. Tyto úlohy se provádějí nad výpočetním prostředím bezserverové služby Functions, takže se nemusíte starat o škálování prostředků – stačí se soustředit na logiku rozhraní API.

Důležité

Proxy služby Azure Functions je starší funkce pro verze 1.x až 3.x modulu runtime Azure Functions. Podporu proxy serverů je možné znovu povolit ve verzi 4.x, abyste mohli úspěšně upgradovat aplikace funkcí na nejnovější verzi modulu runtime. Co nejdříve byste měli přejít na integraci aplikací funkcí se službou Azure API Management. API Management vám umožní využívat ucelenější sadu funkcí pro definování, zabezpečení, správu a monetizaci vašich rozhraní API založených na službě Functions. Další informace najdete v tématu Integrace služby API Management.

Informace o opětovném povolení podpory proxy serverů ve službě Functions verze 4.x najdete v tématu Opětovné povolení proxy serverů ve službě Functions v4.x.

Požadavky

Toto téma používá jako výchozí bod prostředky, které jste vytvořili v kroku Vytvoření první funkce na portálu Azure Portal. Pokud jste tento krok zatím neprovedli, vraťte se k němu a vytvořte aplikaci funkcí.

Výsledná funkce se použije pro zbytek tohoto článku.

Přihlášení k Azure

Přihlaste se k webu Azure Portal pomocí svého účtu Azure.

Přizpůsobení funkce HTTP

Ve výchozím nastavení je funkce triggeru HTTP nakonfigurovaná tak, aby přijímala jakoukoli metodu HTTP. Můžete také použít výchozí adresu URL, https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>. V této části upravíte funkci tak, aby reagovala pouze na požadavky GET pomocí /api/hello.

  1. Přejděte ke své funkci na webu Azure Portal. V nabídce vlevo vyberte Možnost Integrace a pak v části Aktivační událost vyberte HTTP (req).

    Přizpůsobení funkce HTTP

  2. Použijte nastavení triggeru HTTP, jak je uvedeno v následující tabulce.

    Pole Ukázková hodnota Popis
    Šablona trasy dobrý den Určuje, jaká trasa se používá k vyvolání této funkce.
    Úroveň autorizace Anonymní Volitelné: Zpřístupňuje vaši funkci bez klíče rozhraní API.
    Vybrané metody HTTP GET Umožňuje, aby se k vyvolání této funkce daly použít jen vybrané metody HTTP.

    Do šablony trasy jste nezahrnuli předponu /api základní cesty, protože ji zpracovává globální nastavení.

  3. Zvolte Uložit.

Další informace o přizpůsobení funkcí HTTP najdete v tématu Vazby HTTP služby Azure Functions.

Testování rozhraní API

Dále otestujte funkci a podívejte se, jak funguje s novým povrchem rozhraní API:

  1. Na stránce funkce vyberte v nabídce vlevo kód + test .

  2. V horní nabídce vyberte Získat adresu URL funkce a zkopírujte adresu URL. Potvrďte, že teď používá /api/hello cestu.

  3. Zkopírujte tuto adresu URL do nové záložky prohlížeče nebo preferovaného klienta REST.

    Prohlížeče používají funkci GET ve výchozím nastavení.

  4. Přidejte do řetězce dotazu v adrese URL parametry.

    Například /api/hello/?name=John.

  5. Stisknutím klávesy Enter potvrďte, že funguje. Měla by se zobrazit odpověď Hello John.

  6. Můžete také zkusit volat koncový bod jinou metodou HTTP a ověřit, že se funkce nespustí. K tomu použijte klienta REST, například cURL, Postman nebo Fiddler.

Přehled proxy

V další části se rozhraní API zobrazí prostřednictvím proxy serveru. Proxy služby Azure Functions umožňuje předávat žádosti jiným prostředkům. Koncový bod HTTP definujete stejně jako trigger HTTP. Místo psaní kódu, který se má provést při volání tohoto koncového bodu, ale zadáte adresu URL vzdálené implementace. Díky tomu můžete vytvářet více zdrojů rozhraní API do jediné plochy rozhraní API, což je snadné pro klienty, což je užitečné, pokud chcete rozhraní API sestavit jako mikroslužby.

Proxy může odkazovat na libovolný prostředek HTTP, například na:

Další informace o proxy najdete v článku Práce s Proxy služby Azure Functions.

Poznámka:

Proxy servery jsou dostupné ve službě Azure Functions verze 1.x až 3.x.

Vytvoření prvního proxy

V této části vytvoříte nový proxy server, který slouží jako front-end pro vaše celkové rozhraní API.

Nastavení prostředí front-endu

Opakováním kroků vytvořte aplikaci funkcí a vytvořte novou aplikaci funkcí, ve které vytvoříte proxy server. Adresa URL této nové aplikace slouží jako front-end pro naše rozhraní API a aplikace funkcí, kterou jste předtím upravovali, slouží jako back-end.

  1. Na portálu přejděte na novou front-endovou aplikaci funkcí.

  2. Vyberte Možnost Konfigurace a zvolte Nastavení aplikace.

  3. Posuňte se dolů k nastavení aplikace, kde jsou uložené páry klíč/hodnota, a vytvořte nové nastavení s klíčem HELLO_HOST. Nastavte jeho hodnotu na hostitele vaší back-endové aplikace funkcí, například <YourBackendApp>.azurewebsites.net. Tato hodnota je součástí adresy URL, kterou jste si zkopírovali dříve při testování funkce HTTP. Na toto nastavení později odkážete v konfiguraci.

    Poznámka:

    Ke konfiguraci hostitele se doporučuje použít nastavení aplikace. Zabráníte tím, aby byla u proxy pevně zakódovaná závislost na prostředí. Když použijete nastavení aplikace, můžete konfiguraci proxy přesouvat mezi prostředími, přičemž se použijí nastavení aplikace specifická pro dané prostředí.

  4. Zvolte Uložit.

Vytvoření proxy na front-endu

  1. Vraťte se zpět do front-endové aplikace funkcí na portálu.

  2. V nabídce vlevo vyberte proxy servery a pak vyberte Přidat.

  3. Na stránce Nový proxy server použijte nastavení v následující tabulce a pak vyberte Vytvořit.

    Pole Ukázková hodnota Popis
    Name HelloProxy Popisný název sloužící jen ke správě
    Šablona trasy /api/remotehello Určuje, jaká trasa se používá k vyvolání tohoto proxy.
    Adresa URL back-endu https://%HELLO_HOST%/api/hello Určuje koncový bod, na který má být žádost přes proxy směrována.

    Vytvoření proxy

    Proxy služby Azure Functions neposkytuje předponu /api základní cesty, která musí být součástí šablony trasy. Syntaxe %HELLO_HOST% odkazuje na nastavení aplikace, které jste vytvořili dříve. Přeložená adresa URL bude odkazovat na vaši původní funkci.

  4. Vyzkoušejte si nový proxy server zkopírováním adresy URL proxy serveru a jeho testováním v prohlížeči nebo pomocí oblíbeného klienta HTTP:

    • Pro anonymní funkci použijte: https://YOURPROXYAPP.azurewebsites.net/api/remotehello?name="Proxies".
    • Pro funkci s autorizací použijte: https://YOURPROXYAPP.azurewebsites.net/api/remotehello?code=YOURCODE&name="Proxies".

Vytvoření napodobeniny rozhraní API

V dalším kroku použijete proxy k vytvoření napodobení rozhraní API pro vaše řešení. Tento proxy server umožňuje vývoj klientů, aniž by byl plně implementován back-end. Později ve vývoji můžete vytvořit novou aplikaci funkcí, která tuto logiku podporuje a přesměrovat na ni proxy server.

K vytvoření tohoto napodobení rozhraní API vytvoříme nový proxy server, tentokrát pomocí Editoru služby App Service. Začněte tím, že na portálu přejdete na aplikaci funkcí. Vyberte funkce platformy a v části Vývojové nástroje najděte Editor služby App Service. Editor služby App Service se otevře na nové kartě.

Vyberte proxies.json v levém navigačním panelu. Tento soubor ukládá konfiguraci pro všechny proxy servery. Pokud používáte některou z metod nasazení služby Functions, udržujete tento soubor ve správě zdrojového kódu. Další informace o tomto souboru najdete v článku o pokročilé konfiguraci proxy.

Pokud jste postupovali zatím, měl by váš proxies.json vypadat takto:

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

V dalším kroku přidáte napodobení rozhraní API. Nahraďte soubor proxies.json následujícím kódem:

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

Tento kód přidá nový proxy server bez GetUserByNamebackendUri vlastnosti. Místo volání jiného prostředku upravuje výchozí odpověď od proxy pomocí přepisu odpovědi. Přepsání požadavků a odpovědí je možné použít také s back-endovou adresou URL. Tato technika je užitečná při proxy serveru do starší verze systému, kde možná budete muset upravit hlavičky, parametry dotazu atd. Další informace o přepisech žádostí a odpovědí najdete v článku o úpravách žádostí a odpovědí v proxy.

Otestujte napodobeninu rozhraní API voláním koncového bodu <YourProxyApp>.azurewebsites.net/api/users/{username} pomocí prohlížeče nebo oblíbeného klienta REST. Nezapomeňte nahradit {username} řetězcovou hodnotou představující uživatelské jméno.

Další kroky

V tomto článku jste se dozvěděli, jak vytvořit a přizpůsobit rozhraní API ve službě Azure Functions. Také jste zjistili, jak spojit více rozhraní API (včetně napodobenin) do jednoho sjednoceného rozsahu rozhraní API. Pomocí těchto technik můžete vytvořit jakkoli složité rozhraní API, a zároveň používat bezserverový výpočetní model, který poskytuje služba Azure Functions.

Při dalším vývoji rozhraní API vám mohou přijít vhod následující odkazy: