欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

GIN的路由以及傳參問題

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

以冒號(hào)的形式設(shè)置url參數(shù)的話可以通過,對(duì)應(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的處理形式,將會(huì)自動(dòng)跳轉(zhuǎn)到/ping/并交給/ping/*name處理

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

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傳參的時(shí)候(url上顯示的參數(shù))

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

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

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

但是測試的時(shí)候發(fā)現(xiàn),似乎這個(gè)方法不像SpringMVC中的RequestBody可以獲取對(duì)應(yīng)的JSON,這里的操作會(huì)有些復(fù)雜,需要通過流,讀取Body,并且轉(zhuǎn)換成JSON,通過map讀取對(duì)應(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判斷長度

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

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

相關(guān)文章

  • Golang接口型函數(shù)使用小結(jié)

    Golang接口型函數(shù)使用小結(jié)

    接口函數(shù)指的是用函數(shù)實(shí)現(xiàn)接口,這樣在調(diào)用的時(shí)候就會(huì)非常簡便,這種方式適用于只有一個(gè)函數(shù)的接口,這里以迭代一個(gè)map為例,演示這一實(shí)現(xiàn)的技巧,對(duì)Golang接口型函數(shù)使用知識(shí)感興趣的朋友一起看看吧
    2022-06-06
  • golang微服務(wù)框架kratos實(shí)現(xiàn)Socket.IO服務(wù)的方法

    golang微服務(wù)框架kratos實(shí)現(xiàn)Socket.IO服務(wù)的方法

    本文主要介紹了golang微服務(wù)框架kratos實(shí)現(xiàn)Socket.IO服務(wù)的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • GoFrame框架數(shù)據(jù)校驗(yàn)之校驗(yàn)結(jié)果Error接口對(duì)象

    GoFrame框架數(shù)據(jù)校驗(yàn)之校驗(yàn)結(jié)果Error接口對(duì)象

    這篇文章主要為大家介紹了GoFrame框架數(shù)據(jù)校驗(yàn)之校驗(yàn)結(jié)果Error接口對(duì)象示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Go語言fmt.Sprintf格式化輸出的語法與實(shí)例

    Go語言fmt.Sprintf格式化輸出的語法與實(shí)例

    Go 可以使用 fmt.Sprintf 來格式化字符串,下面這篇文章主要給大家介紹了關(guān)于Go語言fmt.Sprintf格式化輸出的語法與實(shí)例,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 深入探究Go語言從反射到元編程的實(shí)踐與探討

    深入探究Go語言從反射到元編程的實(shí)踐與探討

    反射和元編程是一些高級(jí)編程概念,它們使開發(fā)者能夠在運(yùn)行時(shí)檢查、修改并控制程序的行為,了解反射和元編程的工作方式可以幫助我們更好地理解Go,以及如何在需要的時(shí)候高效地使用它們,文章中介紹的非常詳細(xì),感興趣的同學(xué)可以參考下
    2023-05-05
  • Go語言遞歸函數(shù)的具體實(shí)現(xiàn)

    Go語言遞歸函數(shù)的具體實(shí)現(xiàn)

    本文主要介紹了Go語言遞歸函數(shù)的具體實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Go語言中的Array、Slice、Map和Set使用詳解

    Go語言中的Array、Slice、Map和Set使用詳解

    這篇文章主要介紹了Go語言中的Array、Slice、Map和Set使用詳解,本文給出了它們的創(chuàng)建、使用、多維等代碼實(shí)例,需要的朋友可以參考下
    2014-10-10
  • Go語言kube-scheduler深度剖析開發(fā)之scheduler初始化

    Go語言kube-scheduler深度剖析開發(fā)之scheduler初始化

    這篇文章主要介紹了Go語言kube-scheduler深度剖析開發(fā)之scheduler初始化實(shí)現(xiàn)過程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Go1.20?arena新特性示例詳解

    Go1.20?arena新特性示例詳解

    這篇文章主要為大家介紹了Go1.20?arena新特性示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • golang配置管理神器Viper使用教程

    golang配置管理神器Viper使用教程

    這篇文章主要為大家介紹了golang配置管理神器Viper使用教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04

最新評(píng)論