Přizpůsobení koncového bodu HTTP v Azure Functions
V tomto článku se dozvíte, jak Azure Functions umožňuje vytvářet vysoce škálovatelná rozhraní API. Azure Functions se dodává s kolekcí předdefinovaný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 rozšíření rozhraní API tím, že ho integrujete s Azure Functions proxy servery a nastavíte napodobení rozhraní API. Tyto úlohy se provádějí nad bezserverovým výpočetním prostředím Functions, takže se nemusíte starat o škálování prostředků – můžete se soustředit jenom na logiku rozhraní API.
Důležité
Azure Functions proxy servery jsou starší funkce pro verze 1.x až 3.x modulu runtime Azure Functions. Podporu proxy serverů můžete ve verzi 4.x znovu povolit, abyste úspěšně upgradovali aplikace funkcí na nejnovější verzi modulu runtime. Co nejdříve byste měli přejít na integraci aplikací funkcí s 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 API Management.
Informace o opětovném povolení podpory proxy serverů ve Funkcích verze 4.x najdete v tématu Opětovné povolení proxy serverů ve 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. http://<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
.
Přejděte ke své funkci na webu Azure Portal. V nabídce vlevo vyberte Integrace a pak v části Trigger (Trigger) vyberte HTTP (req).
Použijte nastavení triggeru HTTP, jak je uvedeno v následující tabulce.
Pole Ukázková hodnota Popis Šablona trasy hello 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. Nezahrnuli jste předponu
/api
základní cesty do šablony trasy, protože je zpracována globálním nastavením.Vyberte Uložit.
Další informace o přizpůsobení funkcí HTTP najdete v tématu Azure Functions vazby HTTP.
Testování rozhraní API
Dále otestujte funkci a zjistěte, jak funguje s novým povrchem rozhraní API:
Na stránce funkce v nabídce vlevo vyberte Kód + test .
V horní nabídce vyberte Získat adresu URL funkce a zkopírujte adresu URL. Ověřte, že teď používá
/api/hello
cestu.Zkopírujte tuto adresu URL do nové záložky prohlížeče nebo preferovaného klienta REST.
Prohlížeče ve výchozím nastavení používají get.
Přidejte parametry do řetězce dotazu v adrese URL.
Například,
/api/hello/?name=John
.Stisknutím klávesy Enter potvrďte, že funguje. Měla by se zobrazit odpověď : "Hello John".
Můžete také zkusit zavolat koncový bod jinou metodou HTTP a ověřit, že funkce není spuštěná. K tomu použijte klienta REST, například cURL, Postman nebo Fiddler.
Přehled proxy
V další části zobrazíte rozhraní API 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 u triggeru HTTP. Místo psaní kódu, který se má spustit při volání tohoto koncového bodu, ale zadáte adresu URL vzdálené implementace. To vám umožní vytvořit více zdrojů rozhraní API do jedné plochy rozhraní API, což je pro klienty snadné, což je užitečné, pokud chcete vytvořit rozhraní API 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 najdete v článku Práce s Proxy služby Azure Functions.
Poznámka
Proxy servery jsou k dispozici v Azure Functions verzích 1.x až 3.x.
Vytvoření prvního proxy
V této části vytvoříte nový proxy server, který slouží jako front-end celého rozhraní API.
Nastavení prostředí front-endu
Opakováním kroků k vytvoření aplikace funkcí 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.
Na portálu přejděte na novou front-endovou aplikaci funkcí.
Vyberte Konfigurace a zvolte Nastavení aplikace.
Posuňte se dolů na 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 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í.
Vyberte Uložit.
Vytvoření proxy na front-endu
Přejděte zpět do aplikace funkcí front-endu na portálu.
V nabídce vlevo vyberte Proxy 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 Název 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. Azure Functions proxy servery neposkytují 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.Vyzkoušejte nový proxy server tak, že zkopírujete adresu URL proxy serveru a otestujete ji 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
V dalším kroku použijete proxy server k vytvoření napodobení rozhraní API pro vaše řešení. Tento proxy server umožňuje, aby vývoj klienta postupoval, 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 na ni proxy server.
K vytvoření tohoto napodobení rozhraní API vytvoříme nový proxy server, tentokrát pomocí editoru 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 vyhledejte editor App Service. Editor 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 vaše proxy servery. Pokud používáte některou z metod nasazení služby Functions, budete tento soubor udržovat ve správě zdrojového kódu. Další informace o tomto souboru najdete v článku o pokročilé konfiguraci proxy.
Pokud jste postupovali s námi, měl by váš soubor 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 napodobenou verzi 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 GetUserByName
bez backendUri
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 také možné použít s back-endovou adresou URL. Tato technika je užitečná při zprostředkování do starší verze systému, kde může být potřeba 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 zjistili, jak sestavit a přizpůsobit rozhraní API na 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: