本篇内容介绍了“如何使用自动验证restful api请求参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
在反序列化的过程中的针对请求数据的数据格式
以及数据校验
需求,go-zero实现了自己的一套反序列化机制
数据格式
以订单order.api文件为例type ( createOrderReq struct { token string `path:"token"` // 用户token productId string `json:"productId"` // 商品ID num int `json:"num"` // 商品数量 } createOrderRes struct { success bool `json:"success"` // 是否成功 } findOrderReq struct { token string `path:"token"` // 用户token page int `form:"page"` // 页数 pageSize int8 `form:"pageSize"` // 页大小 } findOrderRes struct { orderInfo []orderInfo `json:"orderInfo"` // 商品ID } orderInfo struct { productId string `json:"productId"` // 商品ID productName string `json:"productName"` // 商品名称 num int `json:"num"` // 商品数量 } deleteOrderReq struct { id string `path:"id"` } deleteOrderRes struct { success bool `json:"success"` // 是否成功 } ) service order { @doc( summary: 创建订单 ) @handler CreateOrderHandler post /order/add/:token(createOrderReq) returns(createOrderRes) @doc( summary: 获取订单 ) @handler FindOrderHandler get /order/find/:token(findOrderReq) returns(findOrderRes) @doc( summary: 删除订单 ) @handler: DeleteOrderHandler delete /order/:id(deleteOrderReq) returns(deleteOrderRes) }
http api请求体的反序列化的tag有三种:
path
:http url 路径中参数反序列化
/order/add/1234567
会解析出来token为1234567
form
:http form表单反序列化,需要 header头添加 Content-Type: multipart/form-data
/order/find/1234567?page=1&pageSize=20
会解析出来token为1234567,page为1,pageSize为20
json
:http request json body反序列化,需要 header头添加 Content-Type: application/json
{"productId":"321","num":1}
会解析出来productId为321,num为1
数据校验
以用户user.api文件为例type ( createUserReq struct { age int8 `json:"age,default=20,range=(12:100]"` // 年龄 name string `json:"name"` // 名字 alias string `json:"alias,optional"` // 别名 sex string `json:"sex,options=male|female"` // 性别 avatar string `json:"avatar,default=default.png"` // 头像 } createUserRes struct { success bool `json:"success"` // 是否成功 } ) service user { @doc( summary: 创建订单 ) @handler CreateUserHandler post /user/add(createUserReq) returns(createUserRes) }
数据校验有很多种方式,包括以下但不限:
age
:默认不输入为20,输入则取值范围为(12:100],前开后闭
name
:必填,不可为空
alias
:选填,可为空
sex
:必填,取值为male
或female
avatar
:选填,默认为default.png
“如何使用自动验证restful api请求参数”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。