第十四章 gin基础
文章目录
- Gin快速搭建一个web服务
- Gin数据交互JSON串内容规范
- Gin使用结构体返回数据给前端
- Gin配置POST类型的路由
- Gin获取GET请求参数
Gin快速搭建一个web服务
- 下载包
\\新建一个文件,文件名gitstudy,然后右击使用vscode打开,初始化目录,并下载包
go mod init ginstudy
go get -u github.com/gin-gonic/gin
- 新建main.go
package mainimport ("net/http""github.com/gin-gonic/gin"
)func main() {//1. 创建一个路由引擎,之后可以在路由引擎中添加一些路由和路由处理逻辑r := gin.Default()//2. 添加路由到路由引擎,以及指定该路由的处理逻辑// GET("该路由的路径,处理该路由的逻辑")r.GET("/ping", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "pong",})})r.GET("/", func(c *gin.Context) {//c.String//http.StatusOk, 就是状态码200,http这个包定义了相关状态码别名,直接调用就好c.String(http.StatusOK, "你在访问首页")})//3. 启动gin服务r.Run() // 默认监听8080,可以修改其他端口,r.Run(:8081)
}
Gin数据交互JSON串内容规范
- 用独立函数返回json串的写法
// 定义一个函数,用于gin处理相关请求的逻辑,并返回json数据
func getUserInfo(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"name": "马云","age": 18,"address": "杭州",})
}//使用独立的函数处理逻辑r.GET("/api/user/info", getUserInfo)
浏览器访问
- 前后端分离时,返回j给前端json串常用的格式,这是相对标准的格式,可以给前端返回数据都按这个格式
/*{"status": 200, //请求已经收到,后端处理返回给前端状态码,命名自定义code、statusCode"message": "查询成功""data": {"name": "马云","age": "18","address": "杭州",}}*/
Gin使用结构体返回数据给前端
type UserInfo struct {Username string `json:"username"`Age int `json:"age"`Address string `json:"address"`
}type RetrunData struct {Status int `json:"status"`Message string `json:"message"`Data UserInfo `json:"data"`
}func retrunDataWithStruct(c *gin.Context) {UserInfo := UserInfo{Username: "马云",Age: 18,Address: "杭州",}RetrunData := RetrunData{Status: 200,Message: "用户信息查询",Data: UserInfo,}c.JSON(http.StatusOK, RetrunData)
}r.GET("/api/usr/infoWithSturct", retrunDataWithStruct)
Gin配置POST类型的路由
跟get配置基本一样,只是访问的需要postman使用post请求
func addUser(c *gin.Context) {RetrunData := RetrunData{Status: 200,Message: "创建成功",}c.JSON(http.StatusOK, RetrunData)
}r.POST("/api/user/add", addUser)
Gin获取GET请求参数
参数是什么?就是url 问号后面的字段。?articleId=149418888,多个参数使用&符号分隔
例如:https://editor.csdn.net/md/?articleId=149418888&username=admin
1.配置接收参数
//接受参数u := c.Query("username")id, _ := strconv.Atoi(c.Query("id"))//去数据库中查询该用户信息fmt.Printf("拿到用户名:%s, ID:%d\n", u, id)
-
发送带参数请求
-
查看参数是否已接收到