Webová aplikace

Dokončeno

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, loga net/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() metodu http 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:

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 zadejte defaultExecutablePath. 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.exespustitelný soubor . V příkladu se předpokládá, že vytváříte spustitelný soubor z volaný mygoapp.gosoubor , 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:

  1. Přečtěte si port.
  2. Vytvoření instance serveru HTTP
  3. Definujte trasy a obslužné rutiny tras.
  4. 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)