我正在参加「掘金·启航计划」
go 语言的 web 框架比较出名的有 gin, goframe 等,为了练习 go 语言,选择了 gin 框架作为实战对象。作为一名合格的 CURD 仔,学习 web 框架的第一步当然就是增删查改了,所以本文就是介绍一下怎么跑起 gin 应用并处理 GET, POST 请求, 对 gin 框架有所了解的可以跳过了,仅仅是初学者值得看看。
- GET 请求
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
// 绑定路由规则和执行函数
r.GET("/test", func(c *gin.Context) {
// 获取查询参数
name := c.Query("name")
// 返回 JSON 字符串
c.JSON(200, gin.H{
"name": name,
"age": 12,
})
})
// r.Run(":8080") 可以修改端口,默认是 8080 端口
r.Run()
}
可以看到,GET 请求获取查询参数的方式,就是通过上下文 context 的 Query 对象,返回响应则是封装在上下文 context 的 JSON 对象里
- POST 请求
package main
import "github.com/gin-gonic/gin"
type UserInfo struct {
// 表明该属性与传递的 json 的 user 属性进行绑定
Username string `json:"username" binding:"required"`
Age int `json:"age" binding:"required"`
}
func main() {
// post 请求
r := gin.Default()
r.POST("/add_user", func(c *gin.Context) {
var Params UserInfo
c.ShouldBindJSON(&Params)
c.JSON(200, gin.H{
"Username": Params.Username,
"Age": Params.Age,
})
})
r.Run()
}
而 POST 请求获取 json 参数的方式就比较特别了,需要先定义一个绑定对象,这个绑定对象就是用来检验 json 里面的参数,包括类型,是否必传,相对于其他 web 框架,这一点就显得比较充分了,把参数类型校验作为一个必须完成的校对,繁琐但是却减少误解。 定义完校验参数的对象之后,通过 context 上下文的 ShouldBindJSON 方法就能将参数提取出来。
这样就完成了 gin 框架基本的入门应用,get 请求和 post 请求的参数获取和响应返回。后续找一些具体的项目,使用 gin 做一些实战开发,期待!!