Penggunaan gin rangka kerja Web untuk pembelajaran Golang
Dengan pembangunan Internet, aplikasi Web telah menjadi ciri standard pelbagai sistem perisian. Bahasa pembangunan bahagian pelayan untuk aplikasi web menjadi semakin pelbagai. Antaranya, gaya sintaks berprestasi tinggi dan ringkas Golang semakin digemari oleh pembangun. Artikel ini akan memperkenalkan salah satu rangka kerja web yang biasa digunakan di Golang: gin.
1. Apakah gin
gin ialah rangka kerja aplikasi web yang ditulis dalam bahasa Go. Ia berdasarkan pakej httprouter dan perpustakaan standard net/http, memberikan prestasi tinggi, kecekapan, kemudahan penggunaan dan fungsi yang berkuasa. Gunakan gin untuk membina pelayan web dan fungsi sokongan dengan cepat seperti RESTful API, kumpulan penghalaan, perisian tengah, pengikatan parameter dan pemaparan templat.
2. Pemasangan gin
Sebelum menggunakan kerangka gin, anda perlu memasang gin terlebih dahulu. Anda boleh menggunakan baris arahan berikut untuk memasang:
go get -u github.com/gin-gonic/gin
3. Penggunaan asas gin
Di bawah, kami menggunakan contoh untuk menunjukkan cara menggunakan gin untuk menulis perkhidmatan Web yang ringkas.
Import pakej gin di kepala fail kod:
import "github.com/gin-gonic/gin"
Buat enjin gin baharu menggunakan kaedah gin.New().
r := gin.New()
Gunakan kaedah r.GET(), r.POST(), r.PUT() dan r.DELETE() untuk menentukan laluan, Antaranya, parameter pertama ialah laluan penghalaan, dan parameter kedua ialah fungsi pemprosesan penghalaan.
r.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "Hello World") })
Gunakan kaedah r.Run() untuk memulakan perkhidmatan dan nyatakan alamat perkhidmatan dan nombor port.
r.Run(":8080")
Kod lengkap adalah seperti berikut:
package main import ( "net/http" "github.com/gin-gonic/gin" ) func main() { r := gin.New() r.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "Hello World") }) r.Run(":8080") }
4 penghalaan Gin
Dalam gin, penghalaan. adalah oleh Ia terdiri daripada kaedah penghalaan, laluan permintaan dan fungsi pemprosesan Kaedah penghalaan termasuk GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, dll. Gunakan kaedah seperti r.GET(), r.POST(), r.PUT(), dan r.DELETE() untuk menentukan laluan.
r.GET("/index", func(c *gin.Context) { c.String(http.StatusOK, "Hello World") })
Gunakan titik bertindih (:) untuk menentukan laluan dengan parameter.
r.GET("/hello/:name", func(c *gin.Context) { name := c.Param("name") c.String(http.StatusOK, "Hello %s", name) })
Gunakan kaedah r.Handle() untuk menentukan laluan untuk berbilang jenis permintaan.
r.Handle("GET", "/hello", func(c *gin.Context) { c.String(http.StatusOK, "Hello World") }) r.Handle("POST", "/hello", func(c *gin.Context) { c.String(http.StatusOK, "Hello POST") })
Gunakan kaedah r.Group() untuk melaksanakan pengelompokan penghalaan dan fungsi pemprosesan penghalaan dikongsi boleh ditambahkan pada kumpulan penghalaan.
v1 := r.Group("/v1") { v1.GET("/hello", func(c *gin.Context) { c.String(http.StatusOK, "Hello v1") }) }
5. Gin middleware
Menggunakan gin middleware boleh mencapai banyak fungsi yang berguna, seperti pengesahan dan pengelogan , caching, analisis prestasi , dsb. Gunakan kaedah r.Use() untuk mendaftar middleware.
r.Use(gin.Logger()) r.Use(gin.Recovery())
Menulis kaedah middleware adalah sangat mudah, anda hanya perlu mencipta fungsi dengan parameter jenis gin.Context dan memanggilnya dalam fungsi c Kaedah .Next() boleh merealisasikan fungsi middleware.
func Auth() gin.HandlerFunc { return func(c *gin.Context) { if c.GetHeader("Authorization") != "token" { c.AbortWithStatus(http.StatusUnauthorized) } c.Next() } } r.GET("/hello", Auth(), func(c *gin.Context) { c.String(http.StatusOK, "Hello World") })
6. Pengikatan parameter Gin
Gunakan kaedah c.Query() untuk mendapatkan parameter pertanyaan.
r.GET("/hello", func(c *gin.Context) { name := c.Query("name") age := c.Query("age") c.String(http.StatusOK, "name: %s, age: %s", name, age) })
Gunakan kaedah c.PostForm() untuk mendapatkan data borang POST.
r.POST("/login", func(c *gin.Context) { username := c.PostForm("username") password := c.PostForm("password") c.JSON(http.StatusOK, gin.H{ "username": username, "password": password, }) })
Gunakan kaedah c.BindJSON() untuk mengikat data JSON.
type User struct { Name string `json:"name"` Password string `json:"password"` } r.POST("/login", func(c *gin.Context) { var user User if err := c.BindJSON(&user); err == nil { c.JSON(http.StatusOK, gin.H{ "name": user.Name, "password": user.Password, }) } else { c.JSON(http.StatusBadRequest, gin.H{ "error": err.Error(), }) } })
7. Paparan templat Gin
Menggunakan rangka kerja gin boleh memaparkan templat dan menyokong berbilang enjin templat, seperti html, json, xml, dsb.
Gunakan arahan go get untuk memasang enjin templat.
go get -u github.com/gin-gonic/gin go get -u github.com/gin-gonic/contrib/jwt go get -u github.com/jinzhu/gorm
Gunakan kaedah gin.LoadHTMLGlob() untuk memuatkan fail templat.
r.LoadHTMLGlob("html/*")
Gunakan kaedah c.HTML() untuk memaparkan templat.
r.GET("/html", func(c *gin.Context) { c.HTML(http.StatusOK, "index.html", gin.H{ "title": "Welcome Gin Web Framework", }) })
8. Kesimpulan
Artikel ini memperkenalkan langkah dan teknik asas untuk membina pelayan Web menggunakan rangka kerja gin. Prestasi tinggi dan gaya sintaks ringkas Golang menjadikannya semakin popular di kalangan pembangun dalam pembangunan perkhidmatan web. Saya harap artikel ini dapat membawa sedikit inspirasi dan bantuan kepada pembangun pelayan web Golang.
Atas ialah kandungan terperinci Golang belajar penggunaan web framework gin. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!