最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用gin框架搭建簡易服務(wù)的實(shí)現(xiàn)方法

 更新時(shí)間:2021年12月10日 10:09:18   作者:可可巧克力  
go語言web框架挺多的,本文就介紹了一下如何使用gin框架搭建簡易服務(wù)的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

go語言web框架挺多的,各有各的特點(diǎn)和風(fēng)格。我之所以在項(xiàng)目中使用gin框架,是因?yàn)轫?xiàng)目一開始是用的martini,一個(gè)設(shè)計(jì)得很好的框架,但是存在一個(gè)比較嚴(yán)重的問題,就是大量使用反射使用太多導(dǎo)致效率過低(這個(gè)問題也導(dǎo)致了程序在訪問量暴漲時(shí)內(nèi)存上漲過快的問題),而且這個(gè)框架在去年就沒有人維護(hù)了,而作者推薦使用風(fēng)格很相近的gin框架,大概看了一下,風(fēng)格確實(shí)差不多,而且效率很高,于是就用了gin。至于其它的框架,了解得比較多的是beego,項(xiàng)目中也使用了它的子項(xiàng)目beelog,但是由于我做的項(xiàng)目是偏向于應(yīng)用服務(wù),而不是網(wǎng)站服務(wù),它的風(fēng)格更適合網(wǎng)站服務(wù),因此就沒有選擇它。

貼一下這兩個(gè)框架的github倉庫,martini就不推薦了

gin
beego

下面貼一下用gin搭建一個(gè)簡易的應(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()    //獲得路由實(shí)例

    //添加中間件
    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é)果

這里寫圖片描述

程序的日志輸出

這里寫圖片描述

這里只是快速上手的一些方法,作為一個(gè)web服務(wù)框架,功能當(dāng)然非常強(qiáng)大,這就需要在實(shí)際使用中慢慢挖掘和深究了。

到此這篇關(guān)于使用gin框架搭建簡易服務(wù)的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)gin框架搭建簡易服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文詳解go閉包(Closure)使用教程

    一文詳解go閉包(Closure)使用教程

    在Go語言中,閉包(Closure)是一種特殊的函數(shù),它可以捕獲其創(chuàng)建時(shí)所在作用域中的變量,本文給大家詳細(xì)介紹了go閉包(Closure)使用教程,感興趣的朋友可以參考下
    2024-01-01
  • MacOS中 VSCode 安裝 GO 插件失敗問題的快速解決方法

    MacOS中 VSCode 安裝 GO 插件失敗問題的快速解決方法

    這篇文章主要介紹了MacOS中 VSCode 安裝 GO 插件失敗問題的快速解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • GoLang之使用Context控制請求超時(shí)的實(shí)現(xiàn)

    GoLang之使用Context控制請求超時(shí)的實(shí)現(xiàn)

    這篇文章主要介紹了GoLang之使用Context控制請求超時(shí)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 詳解Golang中結(jié)構(gòu)體方法的高級應(yīng)用

    詳解Golang中結(jié)構(gòu)體方法的高級應(yīng)用

    本文旨在深度剖析Go中結(jié)構(gòu)體方法的高級應(yīng)用。我們不僅會(huì)回顧結(jié)構(gòu)體方法的基本概念和用法,還將探討如何通過高級技巧和最佳實(shí)踐,希望對大家有所幫助
    2024-01-01
  • golang雙指針快速排序的實(shí)現(xiàn)代碼

    golang雙指針快速排序的實(shí)現(xiàn)代碼

    這篇文章主要介紹了golang雙指針快速排序的實(shí)現(xiàn)代碼,通過實(shí)例代碼補(bǔ)充介紹了Golang實(shí)現(xiàn)快速排序和歸并排序以及堆排序算法全注釋,需要的朋友可以參考下
    2024-03-03
  • Go語言HTTPServer開發(fā)的六種方式小結(jié)

    Go語言HTTPServer開發(fā)的六種方式小結(jié)

    Golang的Server開發(fā)顯得非常簡單,有很多種方式,本文就介紹了Go語言HTTPServer開發(fā)的六種方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-11-11
  • Golang sync.Map原理深入分析講解

    Golang sync.Map原理深入分析講解

    go中map數(shù)據(jù)結(jié)構(gòu)不是線程安全的,即多個(gè)goroutine同時(shí)操作一個(gè)map,則會(huì)報(bào)錯(cuò),因此go1.9之后誕生了sync.Map,sync.Map思路來自java的ConcurrentHashMap
    2022-12-12
  • go格式“占位符”輸入輸出 類似python的input

    go格式“占位符”輸入輸出 類似python的input

    這篇文章主要介紹了go格式“占位符”, 輸入輸出,類似python的input,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • GO語言不固定參數(shù)函數(shù)與匿名函數(shù)的使用

    GO語言不固定參數(shù)函數(shù)與匿名函數(shù)的使用

    本文主要介紹了GO語言不固定參數(shù)函數(shù)與匿名函數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 詳解go中的引用類型

    詳解go中的引用類型

    這篇文章主要介紹了go中的引用類型,文中給大家提到了值類型和引用類型的區(qū)別,通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評論

松江区| 潞西市| 泽普县| 揭西县| 平潭县| 乌拉特中旗| 永顺县| 宽甸| 综艺| 化德县| 乐安县| 资兴市| 宝兴县| 尼木县| 江都市| 通州市| 南通市| 温泉县| 杂多县| 六枝特区| 岱山县| 西青区| 大港区| 洛隆县| 彝良县| 古蔺县| 全南县| 大庆市| 紫阳县| 岳阳县| 涟水县| 曲松县| 安徽省| 通海县| 长子县| 遵义市| 泰和县| 甘泉县| 林州市| 清河县| 西平县|