1.gin快速建立web服务

package main

import ("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": "png",
        })
    })
    //3.启动gin服务
    r.Run()
}

2.gin数据交互Json串内容规范

//定义一个函数,用于gin处理相关请求的逻辑并返回json数据
func GetUserInfo(c *gin.Context){
    userinfo = make(map[string]string)
    userinfo["name"] = "yjc"
    userinfo["age"] = "18"
    userinfo["address"] = "杭州"
    c.JSON(http.StatusOK, userinfo)
}

//路由中使用上述独立函数处理路由逻辑
r.GET("/api/user/info", GetUserInfo)

/*
===================================================================

数据返回格式:也可以自定义根据自己情况而定
{
	"status": 200, // 请求后端已经收到 处理也是正常
	"msg": "获取成功",
    "data": {
    	"name": "yjc",
        "age": "18",
        "address": "北京"
    }
}
*/

func GetUserInfo(c *gin.Context){
    returnData = make(map[string]interface{})
    returnData["status"] = 200
    returnData["msg"] = "查询成功"
    userinfo = make(map[string]string)
    userinfo["name"] = "yjc"
    userinfo["age"] = "18"
    userinfo["address"] = "杭州"
    returnData["data"] = userinfo
    c.JSON(http.StatusOK, returnData)
}

3.使用结构体返回给前端数据(推荐)

type UserInfo struct{
    Username string `json:"username"`
    Age int         `json:"age"`
    Address string  `json:"address"`
}
//遵循上述返回数据结构再次定义结构体然后嵌套
type ReturnData struct{
    Status int
    Message string
    Data UserInfo  `json:"data"`
}

func returnDataWithStruct(c *gin.Context){
    userInfo := UserInfo{
        Username: "yjc",
        Age: 18,
        Address: "杭州",
    }
    returndata := ReturnData{Status: 200,
		Message: "成功",
		Data:    userInfo}
	c.JSON(http.StatusOK, returndata)
}

r.GET("/api/user/info", returnDataWithStruct)