中文文档:https://gin-gonic.com/zh-cn/docs/
下载和安装gin模块
go get -u github.com/gin-gonic/gin
简单接口demo
package mainimport "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 mainimport ("github.com/gin-gonic/gin""net/http"
)func main() {r := gin.Default()// gin.H 是map[string]interface{}的缩写r.GET("/someJSON", func(c *gin.Context) {// 方式一:自己拼接JSONc.JSON(http.StatusOK, gin.H{"message": "Hello world!"})})r.GET("/moreJSON", func(c *gin.Context) {// 方法二:使用结构体var msg struct {Name string `json:"user"`Message stringAge int}msg.Name = "小王子"msg.Message = "Hello world!"msg.Age = 18c.JSON(http.StatusOK, msg)})r.Run(":8080")
}
浏览器访问:http://localhost:8080/someJSON
,http://localhost:8080/moreJSON
获取参数
推荐一篇博主写的文章,很全,获取请求参数和绑定参数示例都是全的
获取querystring类型参数
package mainimport ("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 mainimport ("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 mainimport ("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)})r.Run(":8080")
}
使用apiFox新建快捷请求,地址栏输入:http://localhost:8080/json
,请求方式选择post
,请求参数选择Body
里面的json
或者xml
或者raw
,内容如下,然后点击发请求
{"username":"萧寂","address":"河南省"
}
获取path参数
package mainimport ("github.com/gin-gonic/gin""net/http"
)func main() {r := gin.Default()r.GET("/user/search/:username/:address", func(c *gin.Context) {username := c.Param("username"