Přizpůsobení koncového bodu HTTP ve službě Azure Functions
V tomto článku se naučíte vytvářet vysoce škálovatelná rozhraní API pomocí Azure Functions přizpůsobením triggeru HTTP pro zpracování konkrétních akcí v návrhu 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. 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. Vzhledem k tomu, že se tyto úlohy provádějí nad výpočetním prostředím bezserverové služby Functions, nemusíte se zabývat škálováním prostředků. Místo toho se můžete soustředit jenom 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
- Testovací nástroj HTTP, který udržuje vaše data v bezpečí. Další informace najdete v tématu Nástroje pro testování HTTP.
Tento článek používá jako výchozí bod prostředky vytvořené v části Vytvoření první funkce na webu Azure Portal. Pokud jste tento krok zatím neprovedli, vraťte se k němu a vytvořte aplikaci funkcí.
Po vytvoření této aplikace funkcí můžete postupovat podle postupů v tomto č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í nakonfigurujete funkci triggeru HTTP tak, aby přijímala jakoukoli metodu HTTP. V této části upravíte funkci tak, aby reagovala pouze na požadavky GET pomocí /api/hello
. Můžete použít výchozí adresu URL: https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>
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).
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. Vzhledem k tomu, že globální nastavení zpracovává předponu
/api
základní cesty v šabloně trasy, nemusíte ji tady nastavovat.Zvolte Uložit.
Další informace o přizpůsobení funkcí HTTP najdete v přehledu triggerů a vazeb 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:
Na stránce Funkce vyberte v nabídce vlevo kód + test.
V horní nabídce vyberte Získat adresu URL funkce a zkopírujte adresu URL. Ověřte, že vaše funkce teď používá
/api/hello
cestu.Zkopírujte adresu URL na novou kartu prohlížeče nebo preferovaného klienta REST. Prohlížeče používají funkci GET ve výchozím nastavení.
Přidejte do řetězce dotazu v adrese URL parametry. Například
/api/hello/?name=John
.Stisknutím klávesy Enter potvrďte, že funkce funguje. Měla by se zobrazit odpověď Hello John.
Koncový bod můžete také volat jinou metodou HTTP, abyste potvrdili, že se funkce nespustí. Pro jiné metody HTTP než GET musíte použít zabezpečený testovací nástroj HTTP.
Přehled proxy
V další části se rozhraní API zobrazí prostřednictvím proxy serveru. Proxy služby Azure Functions umožňují předávat požadavky 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 pro klienty jednodušší, a je užitečné, pokud chcete rozhraní API sestavit jako mikroslužby.
Proxy může odkazovat na libovolný prostředek HTTP, například na:
- Azure Functions
- Aplikace API ve službě Azure App Service
- Kontejnery Dockeru ve službě App Service v Linuxu
- Jakékoli jiné hostované rozhraní API
Další informace o proxy službě Azure Functions najdete v tématu [Práce se staršími proxy servery].
Poznámka:
Proxy služby Azure Functions 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í front-endového prostředí
Opakujte kroky v části Vytvoření aplikace 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 dříve upravili, slouží jako back-end:
Na portálu přejděte na novou front-endovou aplikaci funkcí.
Rozbalte položku Nastavení a pak vyberte Proměnné prostředí.
Vyberte kartu Nastavení aplikace, kde se ukládají páry klíč/hodnota.
Vyberte + Přidat a vytvořte nové nastavení. Jako název zadejte HELLO_HOST a 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. Později na toto nastavení v konfiguraci odkazujete.
Poznámka:
Doporučujeme použít nastavení aplikace pro konfiguraci hostitele, abyste zabránili pevně zakódované závislosti prostředí pro proxy server. 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í.
Výběrem možnosti Použít uložíte nové nastavení. Na kartě Nastavení aplikace vyberte Použít a pak vyberte Potvrdit a restartujte aplikaci funkcí.
Vytvoření proxy serveru na front-endu
Vraťte se zpět do front-endové aplikace funkcí na portálu.
V nabídce vlevo rozbalte nabídku Functions, vyberte proxy servery a pak vyberte Přidat.
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. Protože proxy služby Azure Functions neposkytují předponu
/api
základní cesty, musíte ji zahrnout do šablony trasy. Syntaxe%HELLO_HOST%
odkazuje na nastavení aplikace, které jste vytvořili dříve. Přeložená adresa URL odkazuje na původní funkci.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"
.
- Pro anonymní funkci použijte:
Vytvoření napodobeniny rozhraní API
Dále pomocí proxy serveru vytvoříte pro své řešení napodobení rozhraní API. Tento proxy server umožňuje vývoj klientů, aniž by bylo nutné plně implementovat back-end. Později ve vývoji můžete vytvořit novou aplikaci funkcí, která tuto logiku podporuje, a přesměrovat do ní proxy server:
Pokud chcete vytvořit toto napodobené rozhraní API, vytvořte nový proxy server, tentokrát pomocí Editoru služby App Service. Začněte tím, že na webu Azure Portal přejdete do aplikace funkcí. Vyberte Funkce platformy a pak v části Vývojové nástroje vyberte Editor služby App Service.
Editor služby App Service se otevře na nové kartě.
Vyberte
proxies.json
v levém podokně. 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 naleznete v části Proxy servery rozšířené konfigurace.Soubor proxies.json by se měl zobrazit takto:
{ "$schema": "http://json.schemastore.org/proxies", "proxies": { "HelloProxy": { "matchCondition": { "route": "/api/remotehello" }, "backendUri": "https://%HELLO_HOST%/api/hello" } } }
Přidejte své 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,
GetUserByName
který vynechábackendUri
vlastnost. Místo volání jiného prostředku upraví výchozí odpověď z proxy serverů Azure Functions pomocí přepsání odpovědi. Můžete také použít přepsání požadavků a odpovědí 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řepsání požadavků a odpovědí najdete v tématu Úprava požadavků a odpovědí.Otestujte své napodobení rozhraní API voláním koncového
<YourProxyApp>.azurewebsites.net/api/users/{username}
bodu v prohlížeči nebo oblíbeném klientovi REST. Nahraďte {username} řetězcovou hodnotou, která představuje uživatelské jméno.
Související obsah
V tomto článku jste se naučili vytvářet a přizpůsobovat rozhraní API pomocí Azure Functions. Také jste se dozvěděli, jak spojit několik rozhraní API, včetně napodobení rozhraní API, jako sjednocený povrch 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.
Další informace o vývoji rozhraní API: