Gyakorlat – Alkalmazás létrehozása egyéni kezelővel

Befejeződött

Ebben a gyakorlatban egy kiszolgáló nélküli alkalmazást fog létrehozni és futtatni a Go használatával.

Az alkalmazás felépítése

Első lépésként bontsa ki az alkalmazást a Visual Studio Code Azure Functions-bővítményével.

  1. Válassza a Megtekintés>Parancskatalógus lehetőséget.
  2. Válassza az Azure Functions: Új projekt létrehozása lehetőséget.
  3. Jelöljön ki egy mappát, általában az aktuális mappát.
  4. A Nyelv kiválasztása területen válassza az Egyéni kezelő lehetőséget.
  5. Az első függvény sablonjának kiválasztása területen válassza a HttpTrigger lehetőséget.
  6. Adjon nevet az alkalmazásnak, például hello.
  7. Válassza ki a névtelen engedélyezési szintet. Ezt később módosíthatja, ha szeretné.

Most már van egy projektje, amely így néz ki:

hello/
  function.json
.funcignore
.gitignore
host.json
local.settings.json
proxies.json

Az alkalmazás létrehozása

A következő lépéssorozat egy HTTP-eseményindítóra reagáló alkalmazás létrehozása.

  1. Hozzon létre egy server.go nevű fájlt a projekt gyökérkönyvtárában.

  2. Adja meg a server.go fájlnak a következő tartalmat:

    package main
    
    import (
     "fmt"
     "io"
     "log"
     "net/http"
     "os"
    )
    

    Az előző kód importálja a HTTP-alkalmazás létrehozásához és a környezeti változók kereséséhez szükséges kódtárakat.

  3. Adja hozzá a következő kódot az importálási utasítások után:

    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))
    }
    

    A main() függvény meghívása önmagában történik. A kód első sora bemutatja, hogyan olvas be a FUNCTIONS_CUSTOM_HANDLER_PORT környezeti változóból:

    customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT")
    

    Ezután a függvény ellenőrzi, hogy létezik-e a port. Ha nem, akkor a függvény a 8080-ás porthoz van rendelve:

    if !exists {
      customHandlerPort = "8080"
    }
    

    A következő kód létrehoz egy HTTP-kiszolgálópéldányt:

    mux := http.NewServeMux()
    

    Az utolsó fontossági sor az, amely elkezd figyelni egy adott portot, és jelzi, hogy készen áll a kérések fogadására a következő módszerrel ListenAndServe():

    log.Fatal(http.ListenAndServe(":"+customHandlerPort, mux))
    
  4. Adja hozzá a fennmaradó kódot. Először keresse meg a következő sort, és bontsa ki:

    // mux.HandleFunc("/api/hello", helloHandler)
    
  5. Az importálási utasítások és a main() függvény között adja hozzá a következő kódot:

    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)
      }
    }
    

    A helloHandler() függvény a tartalomtípust a következőre application/jsonállítja: . A válasz vagy "hello world", vagy a küldött szöveg, ha van.

Az alkalmazás futtatása

Ezen a ponton végzett a kód szerkesztésével, de ehhez konfigurálnia kell a forgatókönyvet. Meg kell adnia, hogy hol található a végrehajtható fájl, hogy a funkciókiszolgáló megtalálja. Konfigurálnia kell azt az útválasztást és állapotot is, amely szerint az alkalmazás HTTP-eseményindítókkal foglalkozik, és nincs más típusú kötés.

  1. Egy terminálból futtassa go build server.go a projekt gyökerében:

    go build server.go
    

    Ez a lépés létrehoz egy végrehajtható fájlt, amelyet macOS-en és Linuxon kiszolgálónak hívnak, vagy windowsos operációs rendszeren server.exe.

  2. Nyissa meg a host.json fájlt, és keresse meg az defaultExecutablePath elemet a customHandler fájlban. Adja meg ./server macOS és Linux rendszeren vagy .\\server.exe Windows operációs rendszeren.

  3. customHandler Az elem alatt adja hozzá az enableForwardingHttpRequest elemet, és adja meg az értékettrue. Az customHandler elemnek így kell kinéznie:

    "customHandler": {
     "description": {
       "defaultExecutablePath": "./server",
       "workingDirectory": "",
       "arguments": []
     },
     "enableForwardingHttpRequest" : true
    }
    
  4. A projekt gyökerében lévő terminálból futtassa a következőt: func start. Ezzel elindítja a Functions-alkalmazást.

    func start
    

    A kimenet végén a következőhöz hasonló kimenet jelenik meg:

    Functions:
    
         hello: [GET,POST] http://localhost:7071/api/hello
    
  5. Böngészőben nyissa meg a http://localhost:7071/api/hello. A "hello world" kimenetnek kell megjelennie.

Gratulálunk! Kifejlesztett egy kiszolgáló nélküli alkalmazást a Go-ban.