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

GIN的路由以及傳參問題

 更新時間:2022年06月14日 10:34:01   作者:杯面Herzog  
本文主要介紹了GIN的路由以及傳參問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1.路由:

func main() {
    r := gin.Default()
    r.GET("/ping/:name", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": c.Param("name"),
        })
        fmt.Println(c.Param("name"))
    })
    r.Run() // listen and serve on 0.0.0.0:8080
 
}

以冒號的形式設(shè)置url參數(shù)的話可以通過,對應(yīng)的參數(shù)可以通過context.Param的形式獲得。但是存在問題 無法導(dǎo)向/ping本身

func main() {
    r := gin.Default()
    r.GET("/ping/*name", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": c.Param("name"),
        })
        fmt.Println(c.Param("name"))
    })
    r.Run() // listen and serve on 0.0.0.0:8080
 
}

這里就存在另一種參數(shù)形式,也就是*,每次獲得的參數(shù)都將包含/,也可以作用于/ping,如果當(dāng)前的路由中不存在/ping的處理形式,將會自動跳轉(zhuǎn)到/ping/并交給/ping/*name處理

并且/ping/*name與/ping/:name存在沖突,不能同時寫入路由。

2.傳參

func main() {
    r := gin.Default()
 
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            ":message": c.Query("name"),
        })
 
    })
 
    r.Run() // listen and serve on 0.0.0.0:8080
 
}

當(dāng)get傳參的時候(url上顯示的參數(shù))

可以通過Context.Query來獲得對應(yīng)的value,如果需要判斷是否為空,則可以使用Context.getQuery更加優(yōu)雅,也可以使用Context.DefaultQuery類似于java中map的getOrDefault

當(dāng)POST傳參的時候(請求寫入body)

可以通過Context.PostForm來獲得對應(yīng)的value,如果需要判斷是否為空,則可以使用Context.getPostForm更加優(yōu)雅,也可以使用Context.DefaultPostForm類似于java中map的getOrDefault。

但是測試的時候發(fā)現(xiàn),似乎這個方法不像SpringMVC中的RequestBody可以獲取對應(yīng)的JSON,這里的操作會有些復(fù)雜,需要通過流,讀取Body,并且轉(zhuǎn)換成JSON,通過map讀取對應(yīng)的參數(shù)

var user map[string]interface{}
body, _ := ioutil.ReadAll(req.Body)
json.Unmarshal(body, &user)
fmt.Println("獲取json中的username:", user["username"])
fmt.Println("獲取json中的password:", user["password"].(string)) //轉(zhuǎn)字符串通過len(password)!=0判斷長度

以上時大致方法,這里先提出一個疑問,看看后面的學(xué)習(xí)中是否能解決,不能直接通過中間件實現(xiàn)一個讀取轉(zhuǎn)化,從SpringMVC來看 這不是一個很難的輪子。

到此這篇關(guān)于GIN的路由以及傳參問題的文章就介紹到這了,更多相關(guān)GIN路由及傳參內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語言結(jié)構(gòu)體(Struct)和接口(Interface)詳解

    Go語言結(jié)構(gòu)體(Struct)和接口(Interface)詳解

    本文主要介紹了Go語言結(jié)構(gòu)體(Struct)和接口(Interface),詳解其定義、匿名字段、值/指針接收器等特性,探討接口的隱式實現(xiàn)、類型斷言及組合應(yīng)用,下面就一起來了解一下
    2025-09-09
  • Go語言并發(fā)編程臨界區(qū)的使用

    Go語言并發(fā)編程臨界區(qū)的使用

    本文主要介紹了Go語言并發(fā)編程臨界區(qū)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • Go語言中Struct與繼承與匿名字段和內(nèi)嵌結(jié)構(gòu)體全面詳解

    Go語言中Struct與繼承與匿名字段和內(nèi)嵌結(jié)構(gòu)體全面詳解

    這篇文章主要介紹了Go語言中Struct與繼承與匿名字段和內(nèi)嵌結(jié)構(gòu)體,Go語言中通過結(jié)構(gòu)體的內(nèi)嵌再配合接口比面向?qū)ο缶哂懈叩臄U(kuò)展性和靈活性,感興趣的可以了解一下
    2023-04-04
  • Go語言題解LeetCode1051高度檢查器示例詳解

    Go語言題解LeetCode1051高度檢查器示例詳解

    這篇文章主要為大家介紹了Go語言題解LeetCode1051高度檢查器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Golang開發(fā)gRPC服務(wù)入門介紹

    Golang開發(fā)gRPC服務(wù)入門介紹

    這篇文章主要介紹了Golang開發(fā)gRPC服務(wù),Golang開發(fā)gRPC應(yīng)用程序的套路也已經(jīng)很清晰,這篇文章就來做一個簡單的介紹,算是入門,需要的朋友可以參考下
    2022-04-04
  • 基于Go語言簡單實現(xiàn)事件管理器

    基于Go語言簡單實現(xiàn)事件管理器

    在編程中,事件管理器是一種常見的工具,用于通過通知來觸發(fā)操作,本文將介紹一個簡單的Go事件管理器的實現(xiàn),并通過異步改進(jìn)提高其性能,感興趣的可以了解下
    2023-11-11
  • golang判斷chan channel是否關(guān)閉的方法

    golang判斷chan channel是否關(guān)閉的方法

    這篇文章主要介紹了golang判斷chan channel是否關(guān)閉的方法,結(jié)合實例形式對比分析了Go語言判斷chan沒有關(guān)閉的后果及關(guān)閉的方法,需要的朋友可以參考下
    2016-07-07
  • golang中結(jié)構(gòu)體嵌套接口的實現(xiàn)

    golang中結(jié)構(gòu)體嵌套接口的實現(xiàn)

    本文主要介紹了golang中結(jié)構(gòu)體嵌套接口的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • golang使用sync.singleflight解決熱點緩存穿透問題

    golang使用sync.singleflight解決熱點緩存穿透問題

    在go的sync包中,有一個singleflight包,里面有一個?singleflight.go文件,代碼加注釋,一共200行出頭,通過?singleflight可以很容易實現(xiàn)緩存和去重的效果,避免重復(fù)計算,接下來我們就給大家詳細(xì)介紹一下sync.singleflight如何解決熱點緩存穿透問題
    2023-07-07
  • Golang實現(xiàn)自己的orm框架實例探索

    Golang實現(xiàn)自己的orm框架實例探索

    這篇文章主要為大家介紹了Golang實現(xiàn)自己的orm框架實例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01

最新評論

延边| 兰溪市| 长治县| 洛宁县| 大竹县| 汤阴县| 庆云县| 封开县| 台山市| 阿图什市| 曲阳县| 色达县| 清远市| 金溪县| 镇安县| 涪陵区| 元氏县| 伊通| 鹤壁市| 雅安市| 法库县| 泰顺县| 永胜县| 丰台区| 恩施市| 成都市| 张北县| 玛纳斯县| 绍兴市| 凌源市| 建平县| 深水埗区| 百色市| 招远市| 高平市| 贡觉县| 张掖市| 平利县| 时尚| 云安县| 全南县|