使用json-schema校验json格式

我们在日常写api的时候,写多了都会发现一个问题,那就是字段校验太烦了,100行代码里有70行都是在校验字段的值,这很浪费注意力和精力,但是不校验的话又无法保证数据的可靠性。后来发现一个json校验的库jsonschema,其原理就是定义一个schema,里面详细定义的json的格式,字段,数据类型,长度等,然后在接收数据的时候把接收到的数据用schema校验,校验失败则返回错误。

这大大减少了字段校验的工作量,而且定义思路都很清晰,减少了不必要的精力浪费。

例如这里定义一个schema:


{

    "type": "object",

    "properties": {

        "userid": {

            "type": "string",

            "minLength": 1,

            "maxLength": 40

        },

        "appid": {

            "type": "string",

            "minLength": 3,

            "maxLength": 200

        },

        "username": {

            "type": "string",

            "minLength": 1,

            "maxLength": 200

        },

        "action": {

            "type": "string",

            "enum": [

                "add",

                "update"

            ]

        }

    },

    "required": [

        "uuid",

        "appid",

        "action"

    ]

}



如果我们接收到的数据为

{

    "userid": '1',

    "appid": '1',

    "username": '1',

    "action": '1'

}

那校验就不会通过,因为数据action字段类型不正确。


数据类型可以有如下几个:

"null"

"boolean"

"object"

"array"

"number"

"string"

还可以加一些属性限制:

enum:列举一些枚举值,表示该字段只能是枚举值中的其中一个,枚举值必须为数值

maxLength/minLength:字符串的长度限制

pattern:字符串必须满足的模式




json 的使用在日常的开发中极其常见,而且因为其不错的灵活性,给我们开发带来了很大的方便;但是,在享受方便的同时,也经常给我们带来的意想不到的 BUG,所以,对于一些比较重要的出入口,加上一个 Schema 校验,让程序运行得更健壮些。使用json-schema的一些好处:


1.在输入输出的地方做参数校验,将非法输入拦截在入口, 将数据校验逻辑从业务逻辑中分离开来

2.能够准确描述api参数的格式,比各种文档更加精确


官方文档:https://json-schema.org/understanding-json-schema/about.html

网友评论

0条评论

发表

网友评论

0条评论

发表

最新评论

推荐文章

彩龙

Copyright © 2008-2019 彩龙社区(http://www.clzg.cn) 版权所有 All Rights Reserved.

免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。

经营许可证编号:滇B2-20090009-7

下载我家昆明APP 下载彩龙社区APP