使用gin框架搭建簡易服務(wù)的實現(xiàn)方法
go語言web框架挺多的,各有各的特點和風格。我之所以在項目中使用gin框架,是因為項目一開始是用的martini,一個設(shè)計得很好的框架,但是存在一個比較嚴重的問題,就是大量使用反射使用太多導(dǎo)致效率過低(這個問題也導(dǎo)致了程序在訪問量暴漲時內(nèi)存上漲過快的問題),而且這個框架在去年就沒有人維護了,而作者推薦使用風格很相近的gin框架,大概看了一下,風格確實差不多,而且效率很高,于是就用了gin。至于其它的框架,了解得比較多的是beego,項目中也使用了它的子項目beelog,但是由于我做的項目是偏向于應(yīng)用服務(wù),而不是網(wǎng)站服務(wù),它的風格更適合網(wǎng)站服務(wù),因此就沒有選擇它。
貼一下這兩個框架的github倉庫,martini就不推薦了
下面貼一下用gin搭建一個簡易的應(yīng)用服務(wù)的代碼片段,非常的簡單,看一下代碼注釋也很容易理解。
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
gin.SetMode(gin.DebugMode) //全局設(shè)置環(huán)境,此為開發(fā)環(huán)境,線上環(huán)境為gin.ReleaseMode
router := gin.Default() //獲得路由實例
//添加中間件
router.Use(Middleware)
//注冊接口
router.GET("/simple/server/get", GetHandler)
router.POST("/simple/server/post", PostHandler)
router.PUT("/simple/server/put", PutHandler)
router.DELETE("/simple/server/delete", DeleteHandler)
//監(jiān)聽端口
http.ListenAndServe(":8005", router)
}
func Middleware(c *gin.Context) {
fmt.Println("this is a middleware!")
}
func GetHandler(c *gin.Context) {
value, exist := c.GetQuery("key")
if !exist {
value = "the key is not exist!"
}
c.Data(http.StatusOK, "text/plain", []byte(fmt.Sprintf("get success! %s\n", value)))
return
}
func PostHandler(c *gin.Context) {
type JsonHolder struct {
Id int `json:"id"`
Name string `json:"name"`
}
holder := JsonHolder{Id: 1, Name: "my name"}
//若返回json數(shù)據(jù),可以直接使用gin封裝好的JSON方法
c.JSON(http.StatusOK, holder)
return
}
func PutHandler(c *gin.Context) {
c.Data(http.StatusOK, "text/plain", []byte("put success!\n"))
return
}
func DeleteHandler(c *gin.Context) {
c.Data(http.StatusOK, "text/plain", []byte("delete success!\n"))
return
}
用curl命令訪問這些接口可以得到對應(yīng)的返回結(jié)果

程序的日志輸出

這里只是快速上手的一些方法,作為一個web服務(wù)框架,功能當然非常強大,這就需要在實際使用中慢慢挖掘和深究了。
到此這篇關(guān)于使用gin框架搭建簡易服務(wù)的實現(xiàn)方法的文章就介紹到這了,更多相關(guān)gin框架搭建簡易服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MacOS中 VSCode 安裝 GO 插件失敗問題的快速解決方法
這篇文章主要介紹了MacOS中 VSCode 安裝 GO 插件失敗問題的快速解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05
GoLang之使用Context控制請求超時的實現(xiàn)
這篇文章主要介紹了GoLang之使用Context控制請求超時的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04
詳解Golang中結(jié)構(gòu)體方法的高級應(yīng)用
本文旨在深度剖析Go中結(jié)構(gòu)體方法的高級應(yīng)用。我們不僅會回顧結(jié)構(gòu)體方法的基本概念和用法,還將探討如何通過高級技巧和最佳實踐,希望對大家有所幫助2024-01-01
Go語言HTTPServer開發(fā)的六種方式小結(jié)
Golang的Server開發(fā)顯得非常簡單,有很多種方式,本文就介紹了Go語言HTTPServer開發(fā)的六種方式,具有一定的參考價值,感興趣的可以了解一下2021-11-11
GO語言不固定參數(shù)函數(shù)與匿名函數(shù)的使用
本文主要介紹了GO語言不固定參數(shù)函數(shù)與匿名函數(shù)的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03

