Gin教程(6)—请求参数
什么是请求参数
请求URL中“?”后边的部分,就是Query。假设有如下的URL:https://mhost.com/article/id/2159?version=adf87asdfnhadfa
其中的version=adf87asdfnhadfa
部分就是query。
示例代码
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
var (
webEng *gin.Engine
)
func main() {
webEng = gin.Default()
//获取文章列表
webEng.GET("/articles", Articles)
webEng.Run(":8080")
}
//查询文章列表,假设请求URL:host/articles?category=news&pageSize=10&pageNum=1
func Articles(c *gin.Context) {
//如果参数不存在,或者为空,则返回空字符串
pSize := c.Query("pageSize")
//如果参数不存在,设置参数的默认值
pNum := c.DefaultQuery("pageNum","1")
var has bool
//获取参数的同时,检测参数是否存在
if pSize,has = c.GetQuery("pageSize");!has{
c.AbortWithStatusJSON(http.StatusBadRequest,gin.H{
"error": "lost page size",
})
return
}
//获取query数组
// /articles?pageNum=1&pageSize=100&category=news&category=tech&category=music
categories := c.QueryArray("category")
//获取query数组,同时检测是否存在
if categories,has = c.GetQueryArray("category");!has{
c.AbortWithStatusJSON(http.StatusBadRequest,gin.H{
"error": "lost category",
})
return
}
//获取query map数据
// /articles?pageNum=1&pageSize=100&category=news&category=tech&category=music&date['start']=2019-07-06&date['end']=2019-11-10
date := c.QueryMap("date")
//获取query map数据,并检测是否设置
if date,has = c.GetQueryMap("date");!has{
c.AbortWithStatusJSON(http.StatusBadRequest,gin.H{
"error": "lost date",
})
return
}
c.JSONP(http.StatusOK, gin.H{
"pageSize":pSize,
"pageNum":pNum,
"category":categories,
"categoryCount":len(categories),
"date":date,
})
}
postman 构造请求和响应结果
curl 请求和响应
#请求
curl -X GET \
'http://127.0.0.1:8080/articles?pageNum=1&pageSize=100&category=news&category=tech&category=music&&date[end]=2019-11-10&date[start]=2019-07-06'
#响应
{"category":["news","tech","music"],"categoryCount":3,"date":{"end":"2019-11-10","start":"2019-07-06"},"pageNum":"1","pageSize":"100"}
详解/说明
gin默认提供的Query请求处理方法有7种(数据绑定除外):
- Context.Query(), Context.GetQuery()
- Context.QueryArray(), Context.GetQueryArray()
- Context.QueryMap(), Context.GetQueryMap()
- Context.DefaultQuery()
其中DefaultQuery() 可以设置参数默认值。
以 ‘Get’ 开始的函数在获取参数值的同时检测是否有设置。
直接以‘Query’开始的函数是对应‘Get’函数的封装,只是忽略了参数存在性的检测。
代码下载:https://github.com/IrvinYoung/gin-lessons
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 irvin.em@live.com。
文章标题:Gin教程(6)—请求参数
文章字数:591
本文作者:dino
发布时间:2019-11-25, 17:49:43
最后更新:2019-11-25, 18:00:50
原始链接:https://blog.walkbc.com/2019/11/25/gin-lesson-queryParameters/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。
QQ交流群:273078549