如何使用Apigee Edge策略进行JSON模式验证

How do I do JSON schema validation using Apigee Edge policies?

本文关键字:JSON 模式 验证 策略 何使用 Apigee Edge      更新时间:2023-09-26

假设您已经根据jsonschema.org定义了有效负载的模式,并且您希望在处理负载或将其传递给后端之前在代理中验证它,如何正确验证负载的内容?

Apigee没有内置JSON模式验证器,所以最好的办法是创建一个Javascript的东西,比如tv4或其他基于Javascript的验证器。然后,您需要创建一个Javascript callout,其中包含用于验证Apigee流变量的脚本,并包含库(例如,tv4.js)

<Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="JSO- Validate-JSON">
    <DisplayName>JS-Validate-JSON</DisplayName>
    <FaultRules/>
    <Properties/>
    <ResourceURL>jsc://validatejson.js</ResourceURL>
    <IncludeURL>jsc://tv4.js</IncludeURL>
</Javascript>

tv4可在github上获得https://github.com/geraintluff/tv4

对Michael b进行一点扩展。response validatejson.js将是一个JavaScript策略,它将把模式加载到模式变量中,该模式变量将根据response.content进行验证:

var valid = tv4.validate(response.content, schema);
if(valid){
    log.info("Schema is valid!" + valid);
} else {
    context.setVariable("raiseFaultRuleSchemaValidation", "true");
    context.setVariable("raiseFaultRuleSchemaValidationMessage", tv4.error)
  }
}