文本序列化和反序列化

    • http api请求体的反序列化
    • http api返回体的序列化
    • 配置文件的反序列化

    本文假定读者已经定义过api文件以及修改过配置文件,如不熟悉,可参照

    http api请求体的反序列化的tag有三种:

    • path:http url 路径中参数反序列化
      • /order/add/1234567会解析出来token为1234567
    • json:http request json body反序列化,需要 header头添加 Content-Type: application/json

      • {"productId":"321","num":1}会解析出来productId为321,num为1

    1.2 数据校验以用户user.api文件为例

    1. type (
    2. createUserReq struct {
    3. name string `json:"name"` // 名字
    4. alias string `json:"alias,optional"` // 别名
    5. sex string `json:"sex,options=male|female"` // 性别
    6. avatar string `json:"avatar,default=default.png"` // 头像
    7. }
    8. createUserRes struct {
    9. success bool `json:"success"` // 是否成功
    10. }
    11. service user {
    12. @doc(
    13. summary: 创建订单
    14. @handler CreateUserHandler
    15. post /user/add(createUserReq) returns(createUserRes)
    16. }
    • age:默认不输入为20,输入则取值范围为(12:100],前开后闭
    • name:必填,不可为空
    • alias:选填,可为空
    • sex:必填,取值为malefemale
    • avatar:选填,默认为default.png

    更多详情参见

    • 配置文件的反序列化和使用同一套解析规则,可参照http api请求体的反序列化