GO语言学习心得day07| 青训营笔记

137 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第七天。今天学习了Go语言的一个HTTP框架gin,gin框架向我展示了Go语言做web开发的轻量和简便,因为之前有过SpringBoot的开发经验,所以对gin框架的学习还是比较轻松的。

编写第一个页面

 在下载好依赖并导包后即可开始使用:

r := gin.Default()
r.GET("/index", func(context *gin.Context) {
   context.JSON(200, gin.H{
      "msg": 2,
   })
})
r.Run()

调用Default()方法可以获得一个引擎对象,该对象可以用来启动服务、配置服务,例如r.GET()方法即为为该服务配置一个GET类型的路由,路径为/index,第二个参数为处理请求的函数,函数中的context参数封装了请求及相应的参数,我们可以通过它获取请求的参数或者设置返回的数据,最常用的设置返回数据的方法有String()方法和JSON()方法。r.Run()方法为服务的启动方法,可以传递一个字符串类型的参数来为服务指定监听的端口。

image.png

RestfulAPI

 gin框架为我们提供了多种不同的请求方法来方便我们处理不同的请求,以Restful风格为准,gin提供了:

  • GET请求:处理查询业务
  • POST请求:处理添加业务
  • PUT请求:处理修改业务
  • DELETE请求:处理删除业务

路由跳转

 类似于java中的路由Controller,gin框架也具有跳转的功能,在访问静态资源之前我们需要先载入资源,gin提供了两个方法用来载入资源,LoadHTMLFiles()和LoadHTMLGlob()方法,第一个方法用来载入某个资源,第二个方法用来载入文件夹下的所有资源。


r.GET("/html", func(context *gin.Context) {
   context.HTML(200, "index.html", gin.H{
      "msg": 2,
   })
})

我们可以调用HTML()方法实现跳转,第一个参数为状态码,第二个参数为目标资源,第三个参数为携带数据,我们可以在HTML页面中使用{{.msg}}来接收:

image.png
结果为:

image.png

重定向

 我们可以调用Redirect()方法来实现重定向

r.GET("/redirect", func(context *gin.Context) {
   context.Redirect(301, "https://www.baidu.com")
})

第一个参数为状态码,重定向的状态码为301,第二个参数为目标地址。我们还可以调用r对象的GROUP()方法来创建一个路由组,并为该路由组设置跟路由。

获取请求参数

 与SpringBoot不同的是,gin不可以把参数直接映射在方法参数中,针对不同的参数需要我们调用对应的方法来获取参数后使用。

  • 路径参数:我们可以使用context对象的Query()方法,将参数名称传入来获取对应的参数
  • Restful:在方法的路径映射中我们需要在参数之前使用:来映射例如:/index/:page/:size,在方法中我们可以使用context.Param()方法来获取对应的参数。
  • 表单参数:我们可以使用context.PostForm()方法来获取前端传来的对应name的表单数据。
  • JSON参数:我们可以使用context.GetRawData()方法来获取前端传来的json数据,需要注意的是该方法返回的并不是字符串而是字节数组,需要我们转成字符串或者map来使用