Webontwikkeling is een van de vele gebieden waarop u Go kunt gebruiken. Veel bedrijven en projecten gebruiken Go op de backend van hun webapplicaties, voornamelijk vanwege de snelheid, het gebruiksgemak en het pakketecosysteem.

De net/http pakket heeft de meeste functionaliteit die je nodig hebt om webapplicaties te bouwen in Go. U kunt andere pakketten uit de functierijke standaardbibliotheek gebruiken. De codering pakket verwerkt gegevensconversie op laag niveau en de html pakket kunt u communiceren met webpagina's.

Daarnaast biedt Go's ecosysteem van pakketten van derden extra functies om webontwikkeling te vergemakkelijken.

1. Het Gin-framework

Gin is een van Go's meest populaire webontwikkelingspakketten. Gin is een zeer performant microframework voor het bouwen van webapplicaties en microservices in Go.

Gin is snel en biedt ingebouwde functionaliteit voor rendering, middleware en JSON-validatie. Het biedt eenvoudig foutbeheer en uitbreidbaarheid. U kunt uw Gin-toepassingen documenteren met de OpenAPI3-specificatie en branie.

Gin heeft een Martini-achtige API en het project beweert veertig keer sneller te zijn. Voor microservices kun je de modulaire componenten van Gin hergebruiken om pijplijnen voor het afhandelen van verzoeken te ontwikkelen.

Je kunt het Gin-framework installeren met dit commando:

Gaan download github.com/gin-gonic/gin

Hier leest u hoe u een eenvoudig verzoekeindpunt instelt met het Gin-framework.

importeren (
"github.com/gin-gonic/gin"
"logboek"
"net/http"
)

funchoofd() {
router := jenever. Standaard()

router. GET("/hallo", func(context *gin. Context) {
context. JSON(http. Status OK, jenever. H{"succes": "Succesvol het eindpunt bereikt"})
})

logboek. Fataln (http. LuisterAndServe(":8080", nul))
}

U kunt een routerinstantie maken met de Standaard methode van de gin pakket. De KRIJGEN methode voor GET-verzoeken neemt het pad (eindpunt) en een handlerfunctiedeclaratie in. Deze voorbeeldfunctie retourneert a 200 HTTP-statuscode naar de client en een geslaagde JSON-reactie in de antwoordtekst.

2. Het vezelraamwerk

Vezel is een geheugenkluis, ExpressJS-achtig raamwerk gebouwd op de razendsnelle snelhttp pakket. Het biedt geweldige prestaties en is gericht op beginners en ervaren Javascript-backend-ontwikkelaars.

Fiber biedt de meeste functionaliteit die je nodig hebt in een backend-framework. Het behandelt routering, aanvraaggroepering, validatie, sjablonen, hooks, foutafhandeling en nog veel meer. Fiber is uitbreidbaar en je kunt Fiber sneller maken met een aangepaste encoder en decoder.

Installeer de nieuwste versie (v2) van het Fiber-framework met deze opdracht:

Gaan download github.com/gofiber/fiber/v2

Hier leest u hoe u een eenvoudig GET-verzoekeindpunt kunt instellen met het Fiber-framework.

importeren "github.com/gofiber/fiber/v2"

funchoofd() {
app := vezel. Nieuw()

app. Get("/hallo", func(ctx *vezel. ctx)fout {
opbrengst ctx. SendString("Hallo")
})

logboek. Fataal (ong. Luister(":8080"))
}

De Nieuw methode retourneert een nieuw exemplaar van een Fiber-app. De Krijgen methode is voor het opzetten KRIJGEN verzoeken. In dit geval is de /hello eindpunt retourneert de tekenreeks Hallo.

Je stelt de app in om te luisteren op poort localhost poort 8080 met de Luister methode van de app.

3. Het Irisraamwerk

Iris is een platformonafhankelijk, efficiënt, volwaardig, goed ontworpen webframework. Je kunt het gebruiken om krachtige, draagbare API's en web-apps in Go te bouwen. Net als Fiber, inspireert Iris ExpressJS enkele van de ontwerppatronen in Iris.

U kunt snel serverloze apps bouwen met Iris en deze implementeren op AWS, Netlify en vele andere services. Het Iris-pakket heeft een CLI-app die u kunt gebruiken voor het live herladen van Iris-sjablonen en het bewaken van uw app.

Het Iris-pakket heeft functies die het ontwikkelen uiterst eenvoudig maken. Iris heeft een Sinatra-achtige API die zorgt voor logging, routering, sessies en Websockets. Het ondersteunt ook GRPC, file serving, authenticatie, autorisatie en testfunctionaliteit.

Voer deze opdracht uit in de terminal van uw werkruimte om het Iris-framework op uw Go-modules te installeren.

Gaan haal github.com/kataras/iris/v12@lastest

Hier leest u hoe u een KRIJGEN verzoek met het Iris-framework om op localhost-poort te draaien 8080.

importeren "github.com/kataras/iris/v12"

funchoofd() {
app := iris. Nieuw() // nieuwe Iris-instantie

app. Handvat ("GET", "/hallo", func(ctx iris. Context) {
_, fout := ctx. JSON(iris. Kaart{"message": "hallo"})

als fout != nul {
opbrengst
}
})

fout := app. Rennen (iris. Addr(":8080"), iris. Zonder ServerError (iris. ErrServerGesloten))

als fout != nul {
opbrengst
}
}

De app variabele is de instantie van een nieuwe Iris-app. De KRIJGEN handler retourneert een JSON-bericht om aan te vragen op de /hello route.

4. Het Beego-framework

Beego is een gebruiksvriendelijk, intelligent en zeer performant Go-framework voor het bouwen van web-apps. Beego maakt het bouwen van modulaire applicaties eenvoudig. Het wordt geleverd met een ingebouwde ORM (object-relationele mapper) en router, naast sjabloonfunctionaliteit.

Beego integreert Go-specifieke mogelijkheden met interfaces en struct-inbedding. Het heeft een geweldige API-structuur, geoptimaliseerd voor snelheid met ondersteuning voor sessies en implementatie en internalisatie.

Beego is wijdverbreid en veel bedrijven, van Opera tot Huawei, Tencent en Weico, gebruiken Beego in de productie.

U kunt deze opdracht gebruiken om het Beego Framework in uw project te installeren.

Gaan get -u github.com/beego/beego/v2

Hier leest u hoe u een eenvoudige KRIJGEN API-eindpunt aanvragen met het Beego-framework.

importeren "github.com/beego/beego/v2/server/web"

type ControllerInstance structureren {
web. Controller // toegangspunt voor de beego-app
}

func(controller *ControllerInstance)Krijgen() {
controleur. Ctx. WriteString ("hallo wereld")
}

funchoofd() {
web. Router("/hallo", &ControllerInstance{}) // montage met beego
web. Rennen() // draaiende beego-app
}

De ControllerInstance struct is het toegangspunt van de Beego-app. De Krijgen handlerfunctie bevat de logica voor a KRIJGEN verzoek aan de /hello eindpunt. Het retourneert de tekenreeks "hallo wereld" als antwoord.

5. Het Revel-raamwerk

Revel blinkt uit door de flexibiliteit die het biedt voor het bouwen van webapplicaties. U kunt de typeveilige routering van Revel gebruiken, controllers bouwen en gebruiken Go-sjablonen met Revel.

Revel biedt functionaliteit voor routering, eenvoudige JSON-codering en -decodering en sessieafhandeling. Het bevat ook functies voor het cachen, debuggen en testen van web-apps. Revel heeft een CLI-pakket voor het bouwen van CLI's voor uw apps. U kunt statische bestanden met Revel aanbieden en chat-apps bouwen met de Websocket-functionaliteit.

Installeer het Revel-framework in uw projectdirectory met deze opdracht:

Gaan download github.com/revel/revel

Het is eenvoudig om een ​​Revel-app in te stellen. Hier is een eenvoudige handlerfunctie voor a KRIJGEN eindpunt aanvragen met het Revel-framework.

importeren (
"github.com/revel/revel"
)

type Model structureren { // eenvoudige modelstructuur
Bericht snaar`json:"bericht"`
Beschrijving snaar`json:"beschrijving"`
}

type App structureren {
* genieten. Controller // ingangspunt voor de verzoeken
}

func(app-app)Hallo()genieten.Resultaat {
model := Model{
Bericht: "succes",
Beschrijving: "Hallo!, Wereld",
}

app. Antwoord. ContentType = "applicatie/json"
opbrengst app. RenderJSON(model)
}

De App struc is het startpunt van de Revel-app. Uw handlers zullen de app-structuur implementeren. Het inhoudstype van het antwoord is JSON en de Hallo handler-functie retourneert een gecodeerde JSON-struct.

Pas op voor het verschil tussen routers en frameworks

Je vindt veel webpakketten in het Go-ecosysteem, waarvan de meeste routers of frameworks zijn. Routers zijn voor het ontvangen van verzoeken via het HTTP-protocol.

U hebt aanvullende pakketten nodig om met routers te werken. Net als die in deze zelfstudie, bevatten de meeste frameworks ingebouwde routers naast andere functionaliteit.