Проверка схемы JSON в Postman

При использовании Postman я проверяю ответ JSON следующим образом:

tv4.addSchema(globalSchema);                
const valResult = tv4.validate(data, schema);

// schema is an object, which is a subschema from the larger globalSchema

который работает нормально, за исключением сообщения об ошибках. В полученном мной объекте ошибки отсутствуют dataPath и schemaPath, из-за чего моему пользователю сложно определить, где на самом деле проблема. Есть ли способ получить эти свойства? (пробовал validateResult и validateMultiple безрезультатно)

В качестве альтернативы я попробовал ajv, но поскольку я нахожусь в draft-04, он выдает ошибки. Совет с их сайта

var ajv = new Ajv({schemaId: 'id'});
// If you want to use both draft-04 and draft-06/07 schemas:
// var ajv = new Ajv({schemaId: 'auto'});
ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-04.json'));

не работает, потому что песочница Почтальона не позволяет мне требовать это… какие-либо мысли?

См. Также: https://community.getpostman.com/t/json-schema-validation-troubles/5024


person Friso    schedule 23.04.2019    source источник
comment
Спасибо @Henke за то, что разобрались с этим. Я больше не участвую в этом проекте, поэтому не могу сказать, помогает ли это, но, судя по всему, ваше предложение не позволяет использовать draft-04 в ajv?   -  person Friso    schedule 02.02.2021
comment
Да, теперь я думаю, что вы правы, и что я ошибался, отмечая это как возможный дубликат. Мои извенения. . . . (Я удалил свой комментарий и снял флажок.) . . Возможно, актуально - github.com/ajv-validator/ajv/issues/895 ? github.com/ajv-validator/ajv#user-content- using-version-7? github.com/ajv-validator/ajv/issues/904?   -  person Henke    schedule 02.02.2021


Ответы (1)


Вот как я проверяю схему с помощью почтальона, чтобы получить более подробные ошибки:

const schema = {
};

var jsonData = JSON.parse(responseBody);

pm.test('Checking Response Against Schema Validation', function() {
    var result=tv4.validateMultiple(jsonData, schema);
    console.log(result);
    pm.expect(result.valid).to.be.true;
});
person Muck    schedule 12.07.2019
comment
И у вас есть члены dataPath и schemaPath? Не могли бы вы привести пример вашего журнала? - person Friso; 29.07.2019
comment
Будет выведен полный список всех ошибок. Однако он не указывает, какие поля не удалось, так что это может быть менее полезно для вас, чем я думал изначально. Пример из консоли: errors: 0: message:"String does not match pattern: ^[a-zA-Z0-9]{4}" name:"ValidationError" type:"Error" 1: message:"String does not match pattern: ^[a-zA-Z0-9]{4}" name:"ValidationError" type:"Error" ... - person Muck; 31.07.2019
comment
Вот почему в моем первоначальном вопросе говорилось: в объекте ошибки, который я получаю, отсутствуют dataPath и schemaPath, из-за чего моему пользователю трудно выяснить, где на самом деле проблема. Есть ли способ получить эти свойства? Спасибо, что пытались мне помочь. - person Friso; 01.08.2019