gin框架之获取URL参数

获取URL参数

在前面的学习中,我们已经学会了使用gin框架进行请求的转发、html模板的渲染,以及静态资源的引入,那么进行我们要进行一系列的参数获取的学习。
那么这个重要吗?非常重要,非常非常重要!!!
学过Java的朋友在学习框架的时候也会进行学习路径参数的获取,
比如,通过一些注解来进行获取参数,例如:RequestParam、PathVariable注解等等。
那这些都是Java的获取方式,那么我们的go世界是如何获取参数的呢?
一起来看看吧,超级舒服

获取querystring参数

在这里插入图片描述

  • 可以看到哈,这个 wd 就是搜索的参数哈,我们在百度里面搜索修改wd的参数,也能完成一个搜索的功能。
  • 但是我们在前端填写后,如何让后台获取到这个参数呢?

这里我们给出了 三种获取方式

	str = c.Query("wd")
	str := c.DefaultQuery("wd","acwing")  
	str , ok := c.GetQuery("wd")
  • 第一种:尝试获取 wd 的参数,获取不到就是nil
  • 第二种:我们设置了一个默认值,如果没有这个参数那么就会使用默认值代替这个参数
  • 第三种:我们尝试获取 wd 的参数,获取不到会返回一个false,然后我们另外做处理即可!
  • 我们来实战一下!!!

在这里插入图片描述

  • 我们r.run跑起来看看结果!!!

在这里插入图片描述

  • 我们通过正常的搜索,完全可以获取参数哈!

在这里插入图片描述
在这里插入图片描述

  • 第二个也可以正常处理,当遇到没有参数的时候进行获取默认的参数

在这里插入图片描述

  • 第三个也可以正常获取参数,没有参数就返回false,我们在false时做特殊处理。
  • 嘿嘿嘿,科科不会怪的我

获取form参数

  • 这个一般时获取表单的里面的数据,而表单里面的提交,一般都是post请求,所以,我们这个要多写一个函数用于获取post请求。

那么针对 post请求 ,go也给出了三种同步的方式,聪明的人已经猜到了,没错,和get请求类似,啊哈哈哈哈哈哈

	username := c.PostForm("username")
	username = c.DefaultPostForm("username","somebody")
	username , ok := c.GetPostForm("username")
  • 这里我们就用获取用户名来举例子哈!表单一般都有用户名满,啊哈哈哈哈哈哈
  • 用法和楼上差不多,我们就不一一举例子了哈,这里就随便选择一个来实战下哈!

为了方便我们提交post请求,我们建立两个模板

用于登录的界面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
    <form action="/login" method="post">
            <label for="username">username:</label>
            <input type="text" name="username" id="username">
            <input type="submit" value="登录">
    </form>
</body>
</html>
  • 返回获取post请求参数的界面 ,
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <div>
    hello {{ .username }}
  </div>
</body>
</html>
  • 非常的人性哈!来看看后台代码吧!

在这里插入图片描述

  • 我们搞好后直接运行看看结果哈!
    在这里插入图片描述
    在这里插入图片描述
  • 点击登录后,即跳转到post请求的模板界面,并将名称参数获取到了!

我们都知道哈,浏览器里面如果不通过表单的形式进行提交,而直接在url参数提交的话,都是get请求哈,有的小伙伴就是不想这么麻烦,就是想直接测试一下这个接口能不能正确获取对吧,那有木有办法呢?

答案是有的哈, 我记得前面的文章里面有提到过, postman这个工具哦,可以直接发送post等请求
我们一起看看吧!
在这里插入图片描述

  • 可以看到哈,我们也成功的对他们做了测试,并且返回了我们想要看到的数据,工具还是舒服呢

获取json参数

  • 这个划重点哈,我们前后端数据交互,最常用的格式就是json格式了。
  • 在go里面同样如此,我们go提供了三种方式进行传输json数据
  • mapgin.H结构体 ,来试试看吧

在这里插入图片描述

  • gin.H有蛮多人看不明白哈,如果你点进源码多看看的话,就会知道,里面其实就是一个map,啊哈哈
  • gin框架就是为了大家方便,封住了下下。然后我们跑起来看看哈!

在这里插入图片描述

  • 非常的完美和人性哈!!!下一个下一个

获取path参数

  • 就玩意就是获取路径上面的参数,没有标明emmm举个例子说明吧,感觉文字难以解释
	http://localhost:9090/index/张三/18
  • 看看这个请求哈,这个表示我们发送一个get请求,里面携带了两个参数,18岁的张三,能理解吧!嘿嘿嘿
  • 那么这个我们要如果获取呢?也很简单哈,gin提供了Param方法
	name := c.Param("name")
  • 这样就可以了吗?
  • 怎么可能呢,路径上的写法要发送一丢丢的改变才可以哈!一起来看看吧!

在这里插入图片描述

  • 路径前面加个冒号 : ,即可哈,跑起来看看效果吧!

在这里插入图片描述

  • 这也是成功的获取到了哈,非常的舒服
  • 有的小伙伴就问了,这个有啥用呢,我们不是已经有那个获取参数的方法了吗,为什么还要整一个这个呢?
  • 存在即合理,不知道大家有木有看到过有的个人博客网站呀,后面跟的上面 ***/2018/12/4这样的路径哈,可以通过这样保存时间呀,兄弟们。

参数的绑定

  • 这玩意还是要说说的,如果不搞这个,那我们以后搞项目的时候,参数一多,头就大了,
  • 来看个代码

在这里插入图片描述

  • 好兄弟们,这个是post请求获取参数,一个一个来呀!
  • 大家都经历过校招吧,去公司官网里面搞简历的时候,那个表单,给人都写吐了,
  • 起码得二三十个参数吧,这总不能一个一个去写这个玩意吧,那不得难受呀,开发人员。
  • 为了不然我们难受哈,我们就来学习参数的绑定。

首先我们先搞个结构体哈,类似于Java里面的类

type UserInfo struct {
	Username string `json:"username" xml:"username" form:"username"`
	Password string	`json:"password" xml:"password" form:"password"`
}
  • 后面的设置标记,不然就要使用大写,首字母大写,在go里面的表示对外开放权限哦,不然访问不到的呢

对于装配数据,go也是给了函数的

	err := c.ShouldBind(&u)
  • 就是这个哈,很好记忆吧 , shouldbind,应该绑定绑定,啊哈哈哈哈哈,
  • 特别注意哈 : 里面的参数一定要是结构体的指针哈!!!

先来发个get请求哈!
在这里插入图片描述

  • 是的,你没有看错,这就可以了,也不用我们去一个一个去写参数了,直接shouldbind。
  • 来看看效果。
    在这里插入图片描述
  • 非常的完美哈!
  • 我们再来试试post请求吧,毕竟表单才是我们需要搞的重点,谁没事在url填写参数呀,哎嘿嘿

在这里插入图片描述

  • post请求和get没啥差别哈,搞get是为了方便看效果,毕竟post要制作表格,
  • 但是今天说了 postman 这个工具满,所以我们使用 postman工具 进行测试哈

在这里插入图片描述

  • 非常的完美和人性哈!

有木有感觉比Java要舒服,啊哈哈哈哈哈!(手动狗头保命)

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木木不会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值