Webová aplikace
Pokud chcete použít vlastní obslužnou rutinu, musíte vytvořit webovou aplikaci. Po napsání a kompilaci aplikace je potřeba nakonfigurovat hostitele Azure Functions, aby věděl, jak ji používat. Další informace o tom prozkoumáme později. Nejprve, jak vytvoříte webovou aplikaci v Go?
Sestavení rozhraní REST API v Go
Pokud chcete vytvořit rozhraní REST API pomocí Go, potřebujete vědět několik věcí:
Import knihoven Použijete knihovny
fmt
,log
anet/http
. Tyto knihovny vám pomůžou spravovat trasy, zpracovávat příchozí požadavky a zpracovávat protokolování. Použijte následující příkaz importu:import ( "fmt", "log", "net/http" )
Nastavte směrování. Rozhraní REST API se skládají z logických dělení označovaných jako trasy. Trasy jsou adresy, které reagují na konkrétní problém v aplikaci. Pokud chcete nastavit trasu, zavolejte
HandleFunc()
metoduhttp
instance a definujte trasu, která bude odpovídat na požadavky:http.HandleFunc("/", handleRoute)
V tomto případě musíte vytvořit
handleRoute
funkci, která bude odpovídat příchozím požadavkům na trasu"/"
.Správa požadavků Potřebujete spravovat příchozí požadavky a číst věci, jako jsou parametry směrovače nebo dotazu nebo publikovaný text. Pak potřebujete vytvořit odpověď. Funkce, která zpracovává požadavek, může vypadat takto:
func handleRequest(w: http:ResponseWriter, r: http.Request) { fmt.Fprintf(w, "My first REST API") }
Kód odešle text "My first REST API" zpět volajícímu klientovi. Metoda
Fprintf()
má dva argumenty: stream odpovědi a řetězec pro odeslání zpět.Vytvořte server. Abyste mohli naslouchat žádostem, musíte spustit server. Musíte také zadat část, do které se dají požadavky odeslat. Následující kód ukazuje, jak vytvořit server:
http.ListenAndServe(":3000", nil)
Server je teď vzhůru a může naslouchat žádostem na portu 3000.
Vytvoření aplikace Azure Functions
Před vývojem aplikace Azure Functions doporučujeme:
Nainstalujte Visual Studio Code. Aplikace Azure Functions můžete vytvářet pomocí libovolného textového editoru nebo integrovaného vývojového prostředí (IDE). Tento modul předvádí některá rozšíření, která usnadňují vytváření.
Nainstalujte rozšíření Visual Studio Code pro Azure Functions. Toto rozšíření vám pomůže vygenerovat aplikaci Functions, spustit ji a ladit.
Nainstalujte nástroje Azure Functions Core Tools. Tato instalace zahrnuje
func
spustitelný příkaz, který umožňuje mimo jiné spustit aplikaci Functions.
Generování aplikace Functions pomocí editoru Visual Studio Code
Po instalaci všech potřebných závislostí v systému je dalším krokem generování aplikace. Po zobrazení dotazu na modul runtime zvolte vlastní obslužnou rutinu.
Teď jste se ujistili, že se vygenerují správné soubory. Když tímto způsobem vygenerujete projekt, musíte pro svou první funkci vybrat typ triggeru. Vlastní obslužné rutiny pracují se všemi obvyklými aktivačními událostmi a vazbami.
Po vygenerování projektu byste měli mít aplikaci s následujícími soubory:
- host.json
- local.setting.json
- proxies.json
- function.json
Soubor function.json je v adresáři, jehož název odpovídá tomu, co jste pojmenovali jako první funkci. Tento soubor použijete ke konfiguraci funkce.
Konfigurace projektu
Aby vaše aplikace fungovala s primitivy HTTP, musíte nakonfigurovat několik věcí:
Poslechněte si vlastní port obslužné rutiny. Vaše aplikace musí naslouchat určitému portu. Proměnná
FUNCTIONS_CUSTOMHANDLER_PORT
obsahuje hodnotu, kterou potřebujete. Hodnotu portu můžete vyhledat pomocí následujícího kódu:customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT")
Nakonfigurujte výchozí cestu spustitelného souboru. Vzhledem k tomu, že vytváříte spustitelný soubor, musíte projektu aplikace Functions sdělit, kde se nachází.
Vyhledejte soubor function.json v kořenovém adresáři projektu.
customHandler
V části zadejtedefaultExecutablePath
. Tady je příklad toho, jak může vypadat:"customHandler": { "defaultExecutablePath": "mygoapp.exe" }
Povolte předávání požadavků. Při práci s funkcí, která používá trigger HTTP, chcete aplikaci nakonfigurovat trochu jinak, než kdybyste pracovali s jiným typem triggeru (například triggerem fronty).
Povolte vlastnost s názvem
enableForwardingHttpRequest
. Pokud je tato vlastnost povolená, změní chování způsobu zpracování požadavku následujícími způsoby:Kopie původní žádosti Požadavek HTTP neobsahuje datovou část požadavku vlastní obslužné rutiny. Místo toho hostitel Functions vyvolá obslužnou rutinu s kopií původního požadavku HTTP.
Stejná cesta jako původní požadavek. Hostitel Functions vyvolá obslužnou rutinu se stejnou cestou jako původní požadavek.
Když definujete trasu a obslužnou rutinu trasy, musíte být specifická v nastavení směrování. Řekněme, že máte následující osnovu projektu:
hello/ function.json
Soubory v osnově se ve výchozím nastavení mapují na trasu
/api/hello
. V kódu pro nastavení trasy musíte zadat úplnou trasu:mux.HandleFunc("/api/hello", helloHandler)
Pokud jste toto nastavení nepovolili, pro jiné typy triggerů a vazeb zadejte kód směrovače tak, jak
"/hello"
by to stačilo.Kopie odpovědi obslužné rutiny Hostitel Functions vrátí kopii odpovědi HTTP obslužné rutiny jako odpověď na původní požadavek.
V předchozím příkladu je mygoapp.exe
spustitelný soubor . V příkladu se předpokládá, že vytváříte spustitelný soubor z volaný mygoapp.go
soubor , ale soubor Go můžete pojmenovat cokoliv, co chcete. V Linuxu nebo macOS nemá spustitelný soubor příponu.
Vytvoření aplikace
Vytvoření webové aplikace se v tomto okamžiku moc neliší od vytváření žádné webové aplikace pomocí Jazyka Go. Pokud jste dokončili konfiguraci popsanou v předchozí části, máte všechno nastavené.
Teď musíte provést následující kroky:
- Přečtěte si port.
- Vytvoření instance serveru HTTP
- Definujte trasy a obslužné rutiny tras.
- Začněte naslouchat na portu.
customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT")
if !exists {
customHandlerPort = "8080"
} // 1)
mux := http.NewServeMux() // 2)
mux.HandleFunc("/order", orderHandler) // 3)
fmt.Println("Go server Listening on: ", customHandlerPort)
log.Fatal(http.ListenAndServe(":"+customHandlerPort, mux)) // 4)