gin基本使用
中文文档:https://gin-gonic.com/zh-cn/docs/
下载和安装gin模块
go get -u github.com/gin-gonic/gin
简单接口demo
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default() // 创建一个默认的路由引擎
r.GET("/ping", func(c *gin.Context) {
// 路由
c.JSON(200, gin.H{
// 返回json数据
"message": "hello golang",
})
})
r.Run() // 监听并在 0.0.0.0:8080 上启动服务
//r.Run(":8081") // 自定义端口
}
浏览器访问:http://127.0.0.1:8080/ping
返回JSON格式数据
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
// gin.H 是map[string]interface{}的缩写
r.GET("/someJSON", func(c *gin.Context) {
// 方式一:自己拼接JSON
c.JSON(http.StatusOK, gin.H{
"message": "Hello world!"})
})
r.GET("/moreJSON", func(c *gin.Context) {
// 方法二:使用结构体
var msg struct {
Name string `json:"user"`
Message string
Age int
}
msg.Name = "小王子"
msg.Message = "Hello world!"
msg.Age = 18
c.JSON(http.StatusOK, msg)
})
r.Run(":8080")
}
浏览器访问:http://localhost:8080/someJSON
,http://localhost:8080/moreJSON
获取参数
推荐一篇博主写的文章,很全,获取请求参数和绑定参数示例都是全的
获取querystring类型参数
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
r.GET("/user/search", func(c *gin.Context) {
username := c.DefaultQuery("username", "小王子") // 没有username对应参数时默认小王子
//username := c.Query("username")
address := c.Query("address") // 获取address参数
//输出json结果给调用方
c.JSON(http.StatusOK, gin.H{
"message": "ok",
"username": username,
"address": address,
})
})
r.Run(":8080")
}
浏览器访问:http://localhost:8080/user/search?username=萧寂&address=河南省
获取form表单参数
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
r.POST("/user/search", func(c *gin.Context) {
// DefaultPostForm取不到值时会返回指定的默认值
//username := c.DefaultPostForm("username", "小王子")
username := c.PostForm("username")
address := c.PostForm("address")
//输出json结果给调用方
c.JSON(http.StatusOK, gin.H{
"message": "ok",
"username": username,
"address": address,
})
})
r.Run(":8080")
}
使用apiFox新建快捷请求,地址栏输入:http://localhost:8080/user/search
,请求方式选择post
,请求参数选择Body
里面的form-data
或者x-www-form-urlencoded
,新增username
字段,值为萧寂
,address
字段,值为河南省
,点击发送请求即可
获取JSON参数
package main
import (
"encoding/json"
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
r.POST("/json", func(c *gin.Context) {
// 注意:下面为了举例子方便,暂时忽略了错误处理
b, _ := c.GetRawData() // 从c.Request.Body读取请求数据
// 定义map或结构体
var m map[string]interface{
}
// 反序列化
_ = json.Unmarshal(b, &m)
c.JSON(http.StatusOK, m)
}