本文提出了一种解决方案体系结构,该体系结构解决了云服务及其使用者之间的交互需要验证和转换JavaScript对象表示法(JSON)有效负载时可能发生的问题。 该架构(我们称为JVAX(JSON验证和转换/转换))使用可配置的JSON模式进行验证和转换。
具有JSON有效负载的云应用程序的开发生命周期通常涉及持续的升级和集成。 每个用例的添加或修改都可能需要更改应用程序的JSON验证和转换逻辑。 结果,应用程序可能变得越来越脆弱且容易出错,并且维护起来很麻烦。
通常,提供代表性状态转移(REST)API的云服务会完成验证和转换JSON有效负载的大量工作。 JVAX体系结构旨在独立于云服务验证和转换JSON有效负载。 结果,JVAX系统减少了服务提供商必须执行的请求验证处理量。 同时,JVAX还有助于使使用它的应用程序更可靠和可维护。
JVAX使用复杂的机制来描述有效负载规则。 为了向您介绍JVAX构造,让我们从一个示例开始。
清单1显示了一个简单的JSON有效负载: Person对象。
清单2显示了清单1的Person对象的JSON模式的基本示例:
清单2中的JSON模式根据各种数据类型描述了Person对象的字段。 表1列出了JVAX支持的类型:
有效负载中的每个字段都需要一个值。 对于每个字段,架构都应用一个category 。 类别使用内部规则(在应用程序代码的业务逻辑中实现)确定JVAX如何处理字段的值。 规则支持一种覆盖值的方法,这对于防止调用方设置无效值特别重要。 表1显示了JVAX类别及其相关的处理规则:
该模式还支持使用枚举,正则表达式和自定义验证机制。 并且由于架构可以引用共享对象定义,因此JVAX促进了代码重用。
JVAX设计中的关键概念是请求在服务提供商处理请求之前先通过JVAX系统。 图1显示了JVAX组件及其相互关系的概述:
图1中反映的基本步骤是:
在JVAX系统上,服务提供者定义一个JSON模式,该模式用作API有效负载的模板。 使用者使用API将JSON有效负载发送到JVAX系统。 JVAX根据模式验证并转换输入有效负载。 当出现错误情况时,JVAX代表提供者响应使用者。 验证成功后,JVAX会将请求重定向到服务提供商。定义JSON模式的过程包括:
服务提供商定义API和关联的有效负载字段。 服务提供者定义了一个JSON模式,该模式反映了API有效负载的字段。 服务提供者使用以下规则定义字段的数据类型: 如果API需要一个字段,则服务提供商将其标记为MANDATORY 。 如果不需要该字段,则将其标记为OPTIONAL 。 应始终具有一组特定值的字段被标记为RESERVED 。 如果不应将字段的值传递给API,则将该字段标记为SUPPRESSED 。图2显示了JSON模式设计涉及的总体步骤:
图3显示了JVAX系统的入门过程:
在图3所示的过程中:
JVAX系统读取服务使用者提供的JSON有效负载。 JVAX读取服务提供者为特定API提供的JSON模式。 JVAX尝试验证JSON模式。 如果遇到错误,它将返回错误条件并停止。 如果该模式有效,则JVAX会根据定义的JSON模式验证JSON有效负载。 如果有效负载与JSON模式的签名不匹配,它将返回错误条件并停止。 如果有效负载验证中没有发生错误,则JVAX(可选)根据API要求转换输入的JSON有效负载。 服务提供者基础框架调用API并将其用于将响应发送给服务使用者。整个JVAX系统可以配置为独立或嵌入式。 在独立配置中,JVAX与云服务分开安装,并作为单独的进程运行。 在嵌入式配置中,JVAX嵌入在现有应用程序中,因此共享相同的处理空间。 嵌入式配置使JVAX易于部署和配置。 它还避免了不必要的硬件配置成本。
JVAX解决方案体系结构的优点是:
易于配置:JVAX的基于规则的方法使实施可能经常更改的业务规则更加容易。 可插拔性和可扩展性:JVAX基于规则的方法可以嵌入到实际服务或任何其他现有代理中。 或者,可以将其添加为拦截和检查有效负载的独立代理。 易于维护:只需更改配置,而无需重新部署服务本身。 效率:除非请求有效,否则请求不会到达API,从而减少了服务提供商的不必要处理开销。 版本支持:即使服务提供商可以更改系统的内部结构,JVAX也提供了一种维护外部接口兼容性的简便方法。 文档支持:模式信息可以直接转换为API文档。JSON被广泛用于在客户端应用程序和Web服务器之间传输数据,这使得JSON验证和转换在云时代变得越来越重要。 JAVX系统可以为服务提供商和服务使用者带来福音。 它的可配置性可帮助服务提供商减少处理JSON格式的各种有效负载所涉及的维护工作。 服务使用者可以轻松地查看JVAX系统的响应,并相应地修改其JSON有效负载。
翻译自: https://www.ibm.com/developerworks/cloud/library/cl-json-verification/index.html
相关资源:jdk-8u281-windows-x64.exe