A webfejlesztés egyike a sok olyan területnek, ahol használhatja a Go-t. Sok vállalat és projekt használja a Go-t webalkalmazásai hátterében, főként annak sebessége, könnyű kezelhetősége és csomagökoszisztémája miatt.
Az net/http csomag tartalmazza a legtöbb olyan funkciót, amelyre szüksége lehet webalkalmazások készítéséhez a Go-ban. Használhat más csomagokat is a funkciókban gazdag szabványos könyvtárból. Az kódolás csomag kezeli az alacsony szintű adatkonverziót és a html csomag lehetővé teszi a weboldalakkal való interakciót.
Ezen túlmenően a Go harmadik féltől származó csomagjainak ökoszisztémája extra funkciókat kínál a webfejlesztés elősegítésére.
1. A Gin-keretrendszer
Gin a Go egyik legnépszerűbb webfejlesztő csomagja. A Gin egy nagy teljesítményű mikro-keretrendszer webalkalmazások és mikroszolgáltatások létrehozásához a Go-ban.
A Gin gyors, és beépített renderelést, köztes szoftvert és JSON-ellenőrzési funkciókat kínál. Könnyű hibakezeléssel és bővíthetőséggel büszkélkedhet. Dokumentálhatja Gin-alkalmazásait az OpenAPI3 specifikációival és swaggerrel.
A Gin egy Martini-szerű API-t tartalmaz, és a projekt negyvenszer gyorsabbnak állítja magát. A mikroszolgáltatások esetében újra felhasználhatja a Gin moduláris komponenseit kéréskezelési folyamatok fejlesztésére.
A Gin keretrendszert ezzel a paranccsal telepítheti:
megy szerezze be a github.com/gin-gonic/gin webhelyet
Így állíthat be egy egyszerű kérési végpontot a Gin keretrendszerrel.
import (
"github.com/gin-gonic/gin"
"napló"
"net/http"
)funcfő-() {
router := gin. Alapértelmezett()router. GET("/helló", func(kontextus *gin. Kontextus) {
kontextus. JSON(http. ÁllapotOK, gin. H{"siker": "Sikeresen elérte a végpontot"})
})
log. Fatalln (http. ListenAndServe(":8080", nulla))
}
Létrehozhat egy útválasztó példányt a Alapértelmezett módszere a gin csomag. Az KAP A GET kérések metódusa az elérési utat (végpontot) és a kezelő függvény deklarációját veszi fel. Ez a példafüggvény a 200 HTTP állapotkód az ügyfélnek, és sikeres JSON-választ kap a választörzsben.
2. A Fiber Framework
Rost memóriabiztos, ExpressJS-szerű a vakítóan gyorsra épített keretrendszer gyorshttp csomag. Kiváló teljesítményt kínál, és a kezdőket és a tapasztalt Javascript háttérfejlesztőket célozza meg.
A Fiber rendelkezik a legtöbb olyan funkcióval, amelyre a háttér-keretrendszerben szüksége lehet. Kezeli az útválasztást, a kérések csoportosítását, az érvényesítést, a sablonozást, a hook-okat, a hibakezelést és még sok mást. A Fiber bővíthető, és egyéni kódoló és dekódoló segítségével gyorsabbá teheti a Fibert.
Telepítse a Fiber keretrendszer legújabb verzióját (v2) ezzel a paranccsal:
megy töltse le a github.com/gofiber/fiber/v2 webhelyet
Így állíthat be egy egyszerű GET-kérés végpontot a Fiber-keretrendszerrel.
import "github.com/gofiber/fiber/v2"
funcfő-() {
app := fiber. Új()kb. Get("/hello", func(ctx *szál. Ctx)hiba {
Visszatérés ctx. SendString("Hello")
})
log. Végzetes (kb. Hallgat(":8080"))
}
Az Új metódus egy Fiber alkalmazás új példányát adja vissza. Az Kap módszer a beállításra szolgál KAP kéréseket. Ebben az esetben a /hello végpont visszaadja a karakterláncot Szia.
Beállítja az alkalmazást, hogy figyeljen a port localhost porton 8080 a... val Hallgat az alkalmazás módszere.
3. Az Iris keretrendszer
Az Iris egy többplatformos, hatékony, teljes értékű, jól megtervezett webes keretrendszer. Használhatja nagy teljesítményű, hordozható API-k és webalkalmazások létrehozására a Go-ban. A Fiberhez hasonlóan az Iris is ExpressJS is inspirálja az Iris tervezési mintáit.
Az Iris segítségével gyorsan készíthet szerver nélküli alkalmazásokat, és telepítheti őket az AWS-re, a Netlify-ra és sok más szolgáltatásra. Az Iris csomag tartalmaz egy CLI-alkalmazást, amelyet az Iris-sablonok élő újratöltésére és az alkalmazás figyelésére használhat.
Az Iris csomag olyan funkciókkal rendelkezik, amelyek rendkívül egyszerűvé teszik a fejlesztést. Az Iris rendelkezik egy Sinatra-szerű API-val, amely gondoskodik a naplózásról, az útválasztásról, a munkamenetekről és a websocketekről. Támogatja a GRPC-t, a fájlkiszolgálást, a hitelesítést, az engedélyezést és a tesztelési funkciókat is.
Futtassa ezt a parancsot a munkaterület termináljában, hogy telepítse az Iris keretrendszert a Go moduljaira.
megy töltse le a github.com/kataras/iris/v12@lastest
Így állíthatja be a KAP kérje az Iris keretrendszerrel, hogy a localhost porton fut 8080.
import "github.com/kataras/iris/v12"
funcfő-() {
app := írisz. Új() // új Iris példánykb. Handle("GET", "/hello", func(ctx írisz. Kontextus) {
_, err := ctx. JSON (írisz. Térkép{"message": "hello"})ha hiba! = nulla {
Visszatérés
}
})hiba := kb. Fuss (írisz. Adr(":8080"), írisz. ServerError nélkül (iris. ErrServerClosed))
ha hiba! = nulla {
Visszatérés
}
}
Az kb változó egy új Iris alkalmazás példánya. Az KAP A kezelő egy JSON-üzenetet ad vissza a kéréshez /hello útvonal.
4. A Beego-keret
Beego egy könnyen használható, intelligens és nagy teljesítményű Go keretrendszer webes alkalmazások készítéséhez. A Beego egyszerűvé teszi a moduláris alkalmazások építését. Beépített ORM-mel (objektum-relációs leképezővel) és útválasztóval, valamint sablon funkcióval érkezik.
A Beego a Go-specifikus képességeket interfészekkel és struktúra beágyazással integrálja. Nagyszerű API-struktúrával rendelkezik, a munkamenet- és telepítési támogatással és internalizálással a sebességre optimalizálva.
A Beego széles körben elterjedt, és sok vállalat, az Operától a Huawei-ig, a Tencentig és a Weicóig használja a Beego-t a gyártás során.
Ezzel a paranccsal telepítheti a Beego Framework-et a projektbe.
megy get -u github.com/beego/beego/v2
Így állíthat be egy egyszerű KAP kérjen API-végpontot a Beego keretrendszerrel.
import "github.com/beego/beego/v2/server/web"
típus ControllerPéldány struct {
web. Vezérlő // belépési pont a beego alkalmazáshoz
}func(vezérlő *ControllerInstance)Kap() {
vezérlő. Ctx. WriteString ("hello világ")
}
funcfő-() {
web. Router("/hello", &ControllerInstance{}) // szerelés beego-val
web. Fuss() // a beego alkalmazás futtatása
}
Az ControllerPéldány A struct a Beego alkalmazás belépési pontja. Az Kap kezelő függvény tartalmazza a logikát a KAP kérni a /hello végpont. Válaszként a „hello world” karakterláncot adja vissza.
5. A Revel Framework
Mulatság ragyog a rugalmasságban, amelyet webalkalmazások készítéséhez biztosít. Használhatja a Revel típusbiztos útválasztását, vezérlőket építhet és használhat Ugrás a sablonokhoz Revel-lel.
A Revel funkcionalitást biztosít az útválasztáshoz, az egyszerű JSON-kódoláshoz és -dekódoláshoz, valamint a munkamenet-kezeléshez. Tartalmaz olyan funkciókat is, amelyek kezelik a gyorsítótárazást, a hibakeresést és a webalkalmazások tesztelését. A Revel rendelkezik egy CLI-csomaggal az alkalmazások CLI-inek létrehozásához. Statikus fájlokat szolgálhat ki a Revel segítségével, és csevegőalkalmazásokat készíthet a Websocket funkciójával.
Telepítse a Revel keretrendszert a projektkönyvtárába ezzel a paranccsal:
megy töltse le a github.com/revel/revel webhelyet
A Revel alkalmazás beállítása egyszerű. Íme egy egyszerű kezelő funkció a KAP kérjen végpontot a Revel keretrendszerrel.
import (
"github.com/revel/revel"
)típus Modell struct { // egyszerű modellstruktúra
Üzenet húr`json:"üzenet"`
Leírás húr`json:"leírás"`
}típus App struct {
*mulatság. Vezérlő // belépési pont a kérésekhez
}func(alkalmazás alkalmazás)Szia()mulatság.Eredmény {
modell := Modell{
Üzenet: "siker",
Leírás: "Hello!, World",
}
kb. Válasz. ContentType = "alkalmazás/json"
Visszatérés kb. RenderJSON(modell)
}
Az App A struct a Revel alkalmazás belépési pontja. A kezelők implementálják az alkalmazásstruktúrát. A választartalom típusa JSON, és a Szia A kezelő függvény egy kódolt JSON-struktúrát ad vissza.
Vigyázzon az útválasztók és a keretrendszerek közötti különbségre
A Go ökoszisztémában számos webes csomag található, amelyek többsége útválasztó vagy keretrendszer. Az útválasztók a HTTP protokollon keresztüli kérések fogadására szolgálnak.
Az útválasztókkal való együttműködéshez további csomagokra lesz szüksége. Az oktatóanyaghoz hasonlóan a legtöbb keretrendszer más funkciók mellett beépített útválasztókat is tartalmaz.