Webalkalmazás
Egyéni kezelő használatához webalkalmazást kell létrehoznia. Miután megírta és lefordította az alkalmazást, konfigurálnia kell az Azure Functions-gazdagépet, hogy tudja, hogyan kell használni. Erről később részletesebben is megismerkedünk. Először is, hogyan hozhat létre webalkalmazást a Go-ban?
REST API létrehozása a Go-ban
A REST API Go használatával történő létrehozásához ismernie kell néhány dolgot:
Könyvtárak importálása. A kódtárakat
fmtlognet/httpés a . Ezek a kódtárak segítenek kezelni az útvonalakat, kezelni a bejövő kéréseket, és kezelni a naplózást. Használja a következő importálási utasítást:import ( "fmt", "log", "net/http" )Útvonalirányítás beállítása. A REST API-k útvonalaknak nevezett logikai osztásokból állnak. Az útvonalak olyan címek, amelyek egy adott problémára reagálnak az alkalmazásban. Útvonal beállításához hívja meg a
HandleFunc()példány metódusáthttp, és határozza meg a kérésekre válaszoló útvonalat:http.HandleFunc("/", handleRoute)Ebben az esetben létre kell hoznia egy függvényt
handleRoute, amely megfelel a bejövő kéréseknek az útvonalon"/".Kérelmek kezelése. Kezelnie kell a bejövő kéréseket, és be kell olvasnia olyan dolgokat, mint az útvonalparamétereket, a lekérdezési paramétereket, valamint a beküldött törzset. Ezután létre kell hoznunk egy választ. A kéréseket kezelő függvények a következőképpen nézhetnek ki:
func handleRequest(w: http:ResponseWriter, r: http.Request) { fmt.Fprintf(w, "My first REST API") }A kód visszaküldi a "Saját első REST API" szöveget egy hívó ügyfélnek. A metódus
Fprintf()két argumentumot használ: a válaszfolyamot és a sztringet a visszaküldéshez.Hozza létre a kiszolgálót. A kérések figyeléséhez el kell indítania a kiszolgálót. Meg kell adnia egy olyan részt is, amelybe a kérések elküldhetők. A következő kód bemutatja, hogyan hozhatja létre a kiszolgálót:
http.ListenAndServe(":3000", nil)A kiszolgáló most már működik, és meghallgathatja a kéréseket a 3000-s porton.
Az Azure Functions alkalmazás létrehozása
Az Azure Functions-alkalmazások fejlesztése előtt a következőket javasoljuk:
Telepítse a Visual Studio Code-ot. Az Azure Functions-alkalmazásokat bármilyen szövegszerkesztővel vagy IDE-vel létrehozhatja. Ez a modul néhány olyan bővítményt mutat be, amelyek megkönnyítik a szerkesztést.
Telepítse az Azure Functions Visual Studio Code-bővítményét. Ez a bővítmény segít a Functions-alkalmazások létrehozásában, futtatásában és hibakeresésében.
Telepítse az Azure Functions Core Toolst. Ez a telepítés tartalmaz egy
funcvégrehajtható parancsot, amely többek között lehetővé teszi a Functions-alkalmazás futtatását.
Függvényalkalmazás vázának létrehozása a Visual Studio Code használatával
Miután telepítette az összes szükséges függőséget a rendszeren, a következő lépés egy alkalmazás létrehozása. Amikor a futási környezetről kérdezik, válassza a Egyéni kezelőt.
Most már meggyőződett arról, hogy a megfelelő fájlok lesznek létrehozva. Ha így hoz létre projektet, ki kell választania egy triggertípust az első függvényhez. Az egyéni kezelők az összes szokásos eseményindítóval és kötéssel dolgoznak.
A projekt létrehozása után rendelkeznie kell egy alkalmazással a következő fájlokkal:
- host.json
- local.setting.json
- proxies.json
- function.json
A function.json fájl egy olyan könyvtárban található, amelynek a neve megegyezik az első függvény nevével. Ezzel a fájllal konfigurálhatja a függvényt.
A projekt konfigurálása
Ahhoz, hogy az alkalmazás HTTP-primitívekkel működjön, konfigurálnia kell néhány dolgot:
Figyeljen egy egyéni kezelőportra. Az alkalmazásnak egy adott portot kell figyelnie. A változó
FUNCTIONS_CUSTOMHANDLER_PORTa szükséges értéket tartalmazza. A port értékét a következő kóddal keresheti meg:customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT")Konfigurálja az alapértelmezett végrehajtható elérési utat. Mivel végrehajtható fájlt készít, meg kell adnia a Functions-alkalmazásprojektnek, hogy hol található.
Keresse meg a function.json fájlt a projekt gyökérkönyvtárában. A
customHandlerszakaszban adja meg adefaultExecutablePathelemet. Íme egy példa arra, hogy hogyan nézhet ki:"customHandler": { "defaultExecutablePath": "mygoapp.exe" }Kérelemtovábbítás engedélyezése. Ha EGY HTTP-eseményindítót használó függvényt használ, az alkalmazást kissé másképp szeretné konfigurálni, mint ha más típusú eseményindítóval (például üzenetsor-eseményindítóval) foglalkozna.
A nevű
enableForwardingHttpRequesttulajdonság engedélyezése Ha ez a tulajdonság engedélyezve van, a következő módokon módosítja a kérés kezelésének viselkedését:Az eredeti kérelem másolata. A HTTP-kérés nem tartalmazza az egyéni kezelő kérésének hasznos adatait. Ehelyett a Functions-gazdagép meghívja a kezelőt az eredeti HTTP-kérés másolatával.
Ugyanaz az elérési út, mint az eredeti kérelem. A Functions-gazdagép ugyanazzal az elérési úttal hívja meg a kezelőt, mint az eredeti kérés.
Útvonal és útvonalkezelő definiálásakor meg kell határoznia az útválasztás beállításának módját. Tegyük fel, hogy az alábbi projektszerkezetet tartalmazza:
hello/ function.jsonA vázlatban lévő fájlok alapértelmezés szerint útvonalra
/api/hellovannak leképezve. Az útvonal beállításához használt kódban meg kell adnia a teljes útvonalat:mux.HandleFunc("/api/hello", helloHandler)Ha nem engedélyezte volna ezt a beállítást, más típusú eseményindítók és kötések esetében elegendő lett volna megadni az útválasztó kódját
"/hello"formában.A kezelő válaszának másolata. A Functions-gazdagép az eredeti kérésre adott válaszként visszaadja a kezelő HTTP-válaszának egy példányát.
Az előző példában a végrehajtható fájl a következő mygoapp.exe: . A példa feltételezi, hogy a végrehajtható fájlt egy úgynevezett mygoapp.gofájlból hozza létre, de a Go-fájlt bárminek elnevezheti. Linux vagy macOS rendszeren a végrehajtható fájl nem rendelkezik bővítménysel.
Az alkalmazás létrehozása
A webalkalmazás létrehozása ezen a ponton nem sokban különbözik attól, hogy webalkalmazást készít a Go használatával. Mindaddig, amíg elvégezte az előző szakaszban leírt konfigurációt, mind be van állítva.
Most meg kell tennie a következő lépéseket:
- Olvassa el a portot.
- HTTP-kiszolgálópéldány példányosítása.
- Útvonalak és útvonalkezelők definiálása.
- Kezdjen el figyelni a porton.
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)