Cvičení – vytvoření aplikace pomocí vlastní obslužné rutiny
V tomto cvičení vytvoříte a spustíte bezserverovou aplikaci pomocí Jazyka Go.
Generování uživatelského rozhraní aplikace
Začněte generováním uživatelského rozhraní aplikace pomocí rozšíření Azure Functions v editoru Visual Studio Code.
- Vyberte paletu příkazů Zobrazit>.
- Vyberte Azure Functions: Vytvořit nový projekt.
- Vyberte složku, obvykle vaši aktuální složku.
- V části Vybrat jazyk vyberte Vlastní obslužnou rutinu.
- V části Vybrat šablonu pro první funkci vyberte HttpTrigger.
- Pojmenujte aplikaci, například hello.
- Vyberte úroveň autorizace anonymního uživatele. Pokud chcete, můžete to později změnit.
Teď máte projekt, který vypadá nějak takto:
hello/
function.json
.funcignore
.gitignore
host.json
local.settings.json
proxies.json
Vytvoření aplikace
Další série kroků spočívá v vytvoření aplikace, která může reagovat na trigger HTTP.
Vytvořte soubor s názvem server.go v kořenovém adresáři projektu.
Dejte serveru.go následující obsah:
package main import ( "fmt" "io" "log" "net/http" "os" )Předchozí kód naimportuje všechny knihovny, které potřebujete k sestavení aplikace HTTP a vyhledání proměnných prostředí.
Za příkazy importu přidejte následující kód:
func main() { customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT") if !exists { customHandlerPort = "8080" } mux := http.NewServeMux() // mux.HandleFunc("/api/hello", helloHandler) fmt.Println("Go server Listening on: ", customHandlerPort) log.Fatal(http.ListenAndServe(":"+customHandlerPort, mux)) }Funkce
main()se vyvolá sama. První řádek kódu uvádí, jak čte zFUNCTIONS_CUSTOM_HANDLER_PORTproměnné prostředí:customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT")Dále funkce zkontroluje, jestli port existuje. Pokud ne, funkce má přiřazený port 8080:
if !exists { customHandlerPort = "8080" }Další kód vytvoří instanci serveru HTTP:
mux := http.NewServeMux()Poslední řádek důležitosti je ten, který začíná naslouchat určitému portu a signály, že je připraven přijímat požadavky pomocí metody
ListenAndServe():log.Fatal(http.ListenAndServe(":"+customHandlerPort, mux))Pojďme přidat zbývající kód. Nejprve vyhledejte následující řádek a odkomentujte ho:
// mux.HandleFunc("/api/hello", helloHandler)Mezi příkazy importu a
main()funkcí přidejte následující kód:func helloHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method == "GET" { w.Write([]byte("hello world")) } else { body, _ := io.ReadAll(r.Body) w.Write(body) } }Funkce
helloHandler()nastaví typ obsahu naapplication/json. Odpoví buď "hello world", nebo zveřejněné tělo, pokud existuje.
Spustit aplikaci
V tuto chvíli jste dokončili vytváření kódu, ale pro tento scénář potřebujete provést určitou konfiguraci. Musíte zdůraznit, kde je spustitelný soubor, aby ho hostitel funkce mohl najít. Musíte také nakonfigurovat směrování a stav, že tato aplikace pracuje s triggery HTTP a žádnými dalšími typy vazeb.
Z terminálu spusťte
go build server.gov kořenovém adresáři projektu:go build server.goTento krok vytvoří spustitelný soubor, který se nazývá server v systému macOS a Linux, nebo server.exe v operačním systému Windows.
Otevřete soubor host.json a najděte
defaultExecutablePathprvek uvnitřcustomHandlersouboru. Zadejte./serverv systémech macOS a Linux nebo.\\server.exev operačním systému Windows.customHandlerPod element přidejteenableForwardingHttpRequestprvek a dejte jí hodnotutrue. VášcustomHandlerprvek by teď měl vypadat takto:"customHandler": { "description": { "defaultExecutablePath": "./server", "workingDirectory": "", "arguments": [] }, "enableForwardingHttpRequest" : true }V terminálu spusťte
func startv kořenovém adresáři projektu. Tím spustíte aplikaci Functions.func startNa konci výstupu se zobrazí podobný výstup:
Functions: hello: [GET,POST] http://localhost:7071/api/helloV prohlížeči přejděte na
http://localhost:7071/api/hello. Měl by se zobrazit výstup "hello world".
Gratulujeme! Vyvinuli jste bezserverovou aplikaci v Go.