Webudvikling er et af mange områder, hvor du kan bruge Go. Mange virksomheder og projekter bruger Go på bagenden af deres webapplikationer, primært for dets hastighed, brugervenlighed og pakke-økosystem.
Det net/http pakken har det meste af den funktionalitet, du skal bruge for at bygge webapplikationer i Go. Du kan bruge andre pakker fra det funktionsrige standardbibliotek. Det indkodning pakken håndterer datakonvertering på lavt niveau og html pakke lader dig interagere med websider.
Ud over dette giver Go's økosystem af tredjepartspakker ekstra funktioner til at hjælpe webudvikling.
1. Gin-rammen
Gin er en af Gos mest populære webudviklingspakker. Gin er en yderst effektiv mikroramme til opbygning af webapplikationer og mikrotjenester i Go.
Gin er hurtig og giver indbygget gengivelse, middleware og JSON-valideringsfunktionalitet. Det kan prale af nem fejlhåndtering og udvidelsesmuligheder. Du kan dokumentere dine Gin-applikationer med OpenAPI3 spec og swagger.
Gin har en Martini-lignende API, og projektet hævder at være fyrre gange hurtigere. For mikrotjenester kan du genbruge Gins modulære komponenter til at udvikle pipelines til håndtering af anmodninger.
Du kan installere Gin-strukturen med denne kommando:
gå få github.com/gin-gonic/gin
Her er, hvordan du opsætter et simpelt anmodningsendepunkt med Gin-rammeværket.
importere (
"github.com/gin-gonic/gin"
"log"
"net/http"
)funcvigtigste() {
router := gin. Standard()router. GET("/hej", func(kontekst *gin. Sammenhæng) {
sammenhæng. JSON(http. StatusOK, gin. H{"success": "Har ramt slutpunktet med succes"})
})
log. Fatalln (http. ListenAndServe(":8080", nul))
}
Du kan oprette en routerinstans med Standard metoden til gin pakke. Det FÅ metode til GET-anmodninger tager stien (slutpunktet) og en handlerfunktionserklæring. Denne eksempelfunktion returnerer en 200 HTTP-statuskode til klienten og et vellykket JSON-svar i svarlegemet.
2. Fiberrammen
Fiber er en hukommelsessikker, ExpressJS-lignende rammer bygget på det lynende hurtige hurtighttp pakke. Det tilbyder fantastisk ydeevne og er rettet mod begyndere og erfarne Javascript-backend-udviklere.
Fiber har det meste af den funktionalitet, du har brug for i en backend-ramme. Det håndterer routing, anmodningsgruppering, validering, skabeloner, hooks, fejlhåndtering og meget mere. Fiber kan udvides, og du kan lave Fiber hurtigere ved at bruge en brugerdefineret koder og dekoder.
Installer den seneste version (v2) af Fiber-rammeværket med denne kommando:
gå få github.com/gofiber/fiber/v2
Sådan kan du konfigurere et simpelt GET-anmodningsslutpunkt med Fiber-rammen.
importere "github.com/gofiber/fiber/v2"
funcvigtigste() {
app := fiber. Ny()app. Get("/hej", func(ctx *fiber. Ctx)fejl {
Vend tilbage ctx. SendString("Hej")
})
log. Fatal (ca. Lyt(":8080"))
}
Det Ny metode returnerer en ny forekomst af en Fiber-app. Det Få metoden er til opsætning FÅ anmodninger. I dette tilfælde /hello endepunkt returnerer strengen Hej.
Du konfigurerer appen til at lytte på port localhost-port 8080 med Lyt appens metode.
3. Iris-rammen
Iris er en cross-platform, effektiv, fuldgyldig, veldesignet webramme. Du kan bruge det til at bygge højtydende, bærbare API'er og webapps i Go. Ligesom Fiber inspirerer Iris is ExpressJS nogle af designmønstrene i Iris.
Du kan hurtigt bygge serverløse apps med Iris og implementere dem på AWS, Netlify og mange andre tjenester. Iris-pakken har en CLI-app, som du kan bruge til live-genindlæsning af Iris-skabeloner og overvågning af din app.
Iris-pakken har funktioner, der gør udvikling ekstremt let. Iris har en Sinatra-lignende API, der tager højde for logning, routing, sessioner og Websockets. Det understøtter også GRPC, filservering, godkendelse, autorisation og testfunktionalitet.
Kør denne kommando i terminalen på dit arbejdsområde for at installere Iris-rammeværket til dine Go-moduler.
gå få github.com/kataras/iris/v12@lastest
Sådan kan du konfigurere en FÅ anmode med Iris-rammen om at køre på localhost-porten 8080.
importere "github.com/kataras/iris/v12"
funcvigtigste() {
app := iris. Ny() // ny Iris-forekomstapp. Handle("GET", "/hej", func(ctx iris. Sammenhæng) {
_, fejl := ctx. JSON(iris. Kort{"message": "hej"})hvis fejl!= nul {
Vend tilbage
}
})fejl := app. Løb (iris. Adr(":8080"), iris. UdenServerError (iris. ErrServerClosed))
hvis fejl!= nul {
Vend tilbage
}
}
Det app variabel er forekomsten af en ny Iris-app. Det FÅ handler returnerer en JSON-meddelelse for at anmode om /hello rute.
4. Beego-rammen
Beego er en letanvendelig, intelligent og højtydende Go-ramme til opbygning af webapps. Beego gør det nemt at bygge modulære applikationer. Den leveres med en indbygget ORM (objektrelationel mapper) og router sammen med skabelonfunktionalitet.
Beego integrerer Go-specifikke funktioner med grænseflader og strukturindlejring. Den har en fantastisk API-struktur, optimeret til hastighed med sessions- og implementeringssupport og internalisering.
Beego er udbredt, og mange virksomheder, fra Opera til Huawei, Tencent og Weico, bruger Beego i produktionen.
Du kan bruge denne kommando til at installere Beego Framework i dit projekt.
gå få -u github.com/beego/beego/v2
Sådan kan du opsætte en simpel FÅ anmod om API-slutpunkt med Beego-rammeværket.
importere "github.com/beego/beego/v2/server/web"
type ControllerInstance struktur {
web. Controller // indgangspunkt for beego-appen
}func(controller *ControllerInstance)Få() {
controller. Ctx. WriteString("hej verden")
}
funcvigtigste() {
web. Router("/hello", &ControllerInstance{}) // montering med beego
web. Løb() // kører beego app
}
Det ControllerInstance struct er indgangspunktet for Beego-appen. Det Få handlerfunktion indeholder logikken for en FÅ anmodning til /hello endepunkt. Den returnerer "hello world"-strengen som et svar.
5. Revel Framework
Revel skinner for den fleksibilitet, det giver til at bygge webapplikationer. Du kan bruge Revels typesikre routing, bygge controllere og bruge Gå skabeloner med Revel.
Revel giver funktionalitet til routing, nem JSON-kodning og afkodning og sessionshåndtering. Det inkluderer også funktioner til at håndtere caching, fejlretning og test af webapps. Revel har en CLI-pakke til at bygge CLI'er til dine apps. Du kan servere statiske filer med Revel og bygge chat-apps med dens Websocket-funktionalitet.
Installer Revel frameworket i dit projektbibliotek med denne kommando:
gå få github.com/revel/revel
Det er nemt at konfigurere en Revel-app. Her er en simpel handlerfunktion til en FÅ anmode om slutpunkt med Revel-rammen.
importere (
"github.com/revel/revel"
)type Model struktur { // simpel model struct
Besked snor`json:"meddelelse"`
Beskrivelse snor`json:"beskrivelse"`
}type App struktur {
* svælge. Controller // indgangspunkt for anmodningerne
}func(app app)Hej()svælge.Resultat {
model := Model{
Besked: "succes",
Beskrivelse: "Hej!, verden",
}
app. Respons. ContentType = "applikation/json"
Vend tilbage app. RenderJSON(model)
}
Det App struct er indgangspunktet for Revel-appen. Dine handlere vil implementere app-strukturen. Svarindholdstypen er JSON, og Hej handlerfunktion returnerer en kodet JSON-struktur.
Pas på forskellen mellem routere og rammer
Du finder mange webpakker i Go-økosystemet, hvoraf de fleste er routere eller frameworks. Routere er til at modtage anmodninger via HTTP-protokollen.
Du skal bruge yderligere pakker for at arbejde med routere. Ligesom dem i denne tutorial inkluderer de fleste rammer indbyggede routere sammen med anden funktionalitet.