项目中的参数采用json进行传入,但很多情况下,如果客户端没有按照要求进行参数传入,比如json中少了API必须要使用的参数,当服务端在进行业务运算的时候就会出现一些异常。可能有人会说,API为了保证功能的正确性,对这些参数进行校验是必须的,但这样一来会出现很多重复的校验代码,肯能又有人会说,采用AOP进行拦截,全部在Advice中实现不就没有重复了么?是这样么?当然不是,即便是在AOP中,你能保证所有的参数校验都是一样的么?还是需要对不同的API进行不同的校验。
那有没有一种比较好的方式,既让参数校验在Advice中进行,又不会有大量的重复呢?当然有,只是我自己的一些做法,那就是jsonschema(什么是jsonschema?请自行Google),虽然目前还只是草案,但其实已经有诸多实现来使用jsonschema对json进行校验,我在项目中也采用这种方式进行校验。
思路分2步:1、将DO生成jsonschema 2、采用schema对json进行校验
涉及到的库:
<dependency>
<groupId>com.github.fge</groupId>
<artifactId>json-schema-validator</artifactId>
<version>2.2.6</version>
</dependency>
<dependency>
<groupId>com.github.reinert</groupId>
<artifactId>jjschema</artifactId>
<version>0.6</version>
</dependency>
json-schema-validator:用于校验
jjschema:用户将DO生成schema(直接缓存起来用就行了)