如何使用 avj 和 postman 验证 json 架构

Posted

技术标签:

【中文标题】如何使用 avj 和 postman 验证 json 架构【英文标题】:How to validate json schema using avj and postman 【发布时间】:2019-07-28 01:00:44 【问题描述】:

我正在尝试验证如下所示的 json:


    "errors": false,

在邮递员上使用这个:

var Ajv = require('ajv'),
    ajv = new Ajv(logger: console, coerceTypes: false),
    schema = 

        "errors": 
                "type": "number"
            
    ;


pm.test('Schema is valid', function() 
    var error = pm.response.json()['errors'];
    console.log("this is error: " +error);
    pm.expect(ajv.validate(schema, errors: error)).to.be.true;
);

pm.test('Schema is valid different way', function() 
    var error = pm.response.json()['errors'];
    console.log("this is error: " +error);
    var validate = ajv.compile(schema);
    pm.expect(validate(pm.response.json())).to.be.true;
);

但它总是通过,即使我的错误对象是boolean 而不是number。我做错了什么?

注意:日志如下所示

this is error: false

【问题讨论】:

【参考方案1】:

您可以在 Postman 中使用 avj 检查 json 架构,如下所示:

    var Ajv = require('ajv'),
    ajv = new Ajv(logger: console),
    schema = 
        "properties": 
            "errors": 
                "type": "boolean"
            
        
    ;

pm.test('Schema is valid', function() 
    var error = pm.response.json()['errors'];
    pm.expect(ajv.validate(schema, errors: error)).to.be.true;
);

数据:


    "errors": false

结果:通过


数据:


    "errors": true

结果:通过


数据:


    "errors": 123

结果:失败


另一种方式

pm.test('Schema is valid', function() 
   pm.expect(typeof(pm.response.json().errors) === "boolean").to.be.true;
);

【讨论】:

你没有抓住重点..数据一个布尔值,我想验证它是布尔值,当它是一个数字时失败 @abbood,谢谢,已更新答案。让我知道我仍然缺少任何东西!

以上是关于如何使用 avj 和 postman 验证 json 架构的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Postman 测试 jwt 身份验证

使用 System.Web.Http.ApiController + Postman 进行身份验证 - 没有遇到断点/不确定这是如何工作的

如何使用 Postman 使用 cookie 身份验证测试 ASP.NET Core Web API?

postman如何绕过登录账户和密码验证,进行接口测试的方法

如何在 Postman 上读取 Post 请求的内容?

Postman详解