iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >GIN的路由以及传参问题
  • 610
分享到

GIN的路由以及传参问题

2024-04-02 19:04:59 610人浏览 独家记忆
摘要

目录1.路由:2.传参当get传参的时候(url上显示的参数)当POST传参的时候(请求写入body)1.路由: func main() { r := gin.Default

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
 
}

以冒号的形式设置url参数的话可以通过,对应的参数可以通过context.Param的形式获得。但是存在问题 无法导向/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
 
}

这里就存在另一种参数形式,也就是*,每次获得的参数都将包含/,也可以作用于/ping,如果当前的路由中不存在/ping的处理形式,将会自动跳转到/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
 
}

当get传参的时候(url上显示的参数)

可以通过Context.Query来获得对应的value,如果需要判断是否为空,则可以使用Context.getQuery更加优雅,也可以使用Context.DefaultQuery类似于java中map的getOrDefault

当POST传参的时候(请求写入body)

可以通过Context.PostFORM来获得对应的value,如果需要判断是否为空,则可以使用Context.getPostForm更加优雅,也可以使用Context.DefaultPostForm类似于java中map的getOrDefault。

但是测试的时候发现,似乎这个方法不像springMVC中的RequestBody可以获取对应的JSON,这里的操作会有些复杂,需要通过流,读取Body,并且转换成JSON,通过map读取对应的参数

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)) //转字符串通过len(password)!=0判断长度

以上时大致方法,这里先提出一个疑问,看看后面的学习中是否能解决,不能直接通过中间件实现一个读取转化,从springmvc来看 这不是一个很难的轮子。

到此这篇关于GIN的路由以及传参问题的文章就介绍到这了,更多相关GIN路由及传参内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: GIN的路由以及传参问题

本文链接: https://www.lsjlt.com/news/151389.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作