文档章节

根据jsonshema验证json参数

Wilsonp
 Wilsonp
发布于 2016/09/24 15:23
字数 378
阅读 47
收藏 0

         项目中的参数采用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(直接缓存起来用就行了)

© 著作权归作者所有

共有 人打赏支持
Wilsonp
粉丝 0
博文 19
码字总数 6679
作品 0
徐汇
架构师
私信 提问
AlexGao/WSHttpHelper

轻量级Http请求框架。清晰明了的请求接口描述,灵活的扩展机制。 快捷接口: 支持同步调用; 支持异步调用,异步回调; 支持JSON自动转换为指定类型; 支持自定义输入参数验证; 支持自定义结果解...

AlexGao
2015/12/20
0
0
从YYModel源码中可以学到什么:后篇

前言 上一篇中《从YYModel源码中可以学到什么:后篇》中主要学习了的源码结构,只是分享了整体结构。 承接上篇,本文将解读如何进行JSON模型转换的,接下来一起揭开的神秘面纱吧! 目录 JSON...

Owenli_千
2017/12/29
0
0
RESTFUL API 安全设计

0x01 REST API 简介 REST的全称是REpresentational State Transfer,表示表述性无状态传输,无需session,所以每次请求都得带上身份认证信息。rest是基于http协议的,也是无状态的。只是一种...

Joe小桥
2015/10/23
638
0
thinkphp框架中引入ping++支付server SDK

ping++支付平台整合了支付宝,微信支付,百度钱包,银联支付等主流支付方式。而且其开发文档,也很容易理解和上手,所以想写篇博客,记录下来(thinkphp)服务器端使用其SDK的步骤【test模式...

爱因为在心中1010
2016/10/28
177
0
REST API 安全设计指南

REST API 安全设计指南。REST的全称是REpresentational State Transfer,它利用传统Web特点,提出提出一个既适于客户端应用又适于服务端的应用的、统一架构,极大程度上统一及简化了网站架构...

gsying1474
2016/06/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么强烈建议大家使用枚举来实现单例

关于单例模式,我的博客中有很多文章介绍过。作为23种设计模式中最为常用的设计模式,单例模式并没有想象的那么简单。因为在设计单例的时候要考虑很多问题,比如线程安全问题、序列化对单例的...

群星纪元
25分钟前
8
0
Confluence 6 超过当前许可证期限进行升级

这个页面将会对你在进行 Confluence 升级的时候超过了当前许可证的期限进行升级的情况。 许可证警告 在升级的过程中,你将会在 Confluence 的应用程序日志(log file)中看到类似下面的错误提...

honeymoose
38分钟前
2
0
顶尖战略咨询公司常用分析模型

1、KANO模型 日本教授狩野纪昭(Noriaki Kano)构建出的kano模型。将影响用户满意度的因素划分为五个类型,包括: 魅力因素:用户意想不到的,如果不提供此需求,用户满意度不会降低,但当提供...

Moks角木
54分钟前
2
0
Linux iptables之mangle表使用案例

mangle表的用途 mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由。 mangel表使用示例 示例1-策略路由1 内网的客户机通...

月下狼
今天
3
0
OSChina 周日乱弹 —— 兼职我想去学学布偶戏

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy : 《火炎 - 女王蜂》 《火炎 - 女王蜂》 手机党少年们想听歌,请使劲儿戳(这里) @小鱼丁 :还在睡觉突然接到一个小哥哥电话“x...

小小编辑
今天
223
8

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部