What is @stoplight/better-ajv-errors?
@stoplight/better-ajv-errors is a utility package designed to provide more human-readable error messages when using the AJV JSON schema validator. It enhances the default error messages provided by AJV, making it easier to understand and debug schema validation issues.
What are @stoplight/better-ajv-errors's main functionalities?
Human-Readable Error Messages
This feature allows you to generate more readable error messages from AJV validation errors. The code sample demonstrates how to use @stoplight/better-ajv-errors to transform AJV's default error messages into a more understandable format.
const Ajv = require('ajv');
const betterAjvErrors = require('@stoplight/better-ajv-errors');
const ajv = new Ajv();
const schema = {
type: 'object',
properties: {
name: { type: 'string' },
age: { type: 'integer' }
},
required: ['name', 'age']
};
const data = {
name: 'John Doe',
age: 'twenty-five'
};
const validate = ajv.compile(schema);
const valid = validate(data);
if (!valid) {
const output = betterAjvErrors(schema, data, validate.errors, { format: 'js' });
console.log(output);
}
Other packages similar to @stoplight/better-ajv-errors
ajv-errors
ajv-errors is an AJV plugin that allows for custom error messages in JSON schema validation. Unlike @stoplight/better-ajv-errors, which focuses on making default error messages more readable, ajv-errors lets you define custom error messages directly in your JSON schema.
ajv-i18n
ajv-i18n is another AJV plugin that provides internationalization (i18n) for AJV error messages. It translates AJV's default error messages into various languages. While @stoplight/better-ajv-errors focuses on readability, ajv-i18n focuses on localization.
JSON Schema validation for Human 👨🎤
Main goal of this library is to provide relevant AJV error messages. It's a fork
of great better-ajv-errors by
Atlassian, with focus on being leaner.
Installation
$ yarn add @stoplight/better-ajv-errors
or
$ npm i @stoplight/better-ajv-errors
Also make sure that you installed ajv
package to validate data against JSON schemas.
Usage
First, you need to validate your payload with ajv
. If it's invalid then you
can pass validate.errors
object into better-ajv-errors
.
import Ajv from 'ajv';
import betterAjvErrors from '@stoplight/better-ajv-errors';
const ajv = new Ajv({ jsonPointers: true });
const schema = ...;
const data = ...;
const validate = ajv.compile(schema);
const valid = validate(data);
if (!valid) {
const output = betterAjvErrors(schema, validate.errors, {
propertyPath: [],
targetValue: data,
});
console.log(output);
}
API
Returns formatted validation error to print in console
. See
options.format
for further details.
schema
Type: Object
The JSON Schema you used for validation with ajv
.
errors
Type: Array
Array of
ajv validation errors
options
Type: Object
propertyPath
Type: Array
Property path of a validated object that is a part of a bigger document. Might
be empty if the validated object equals the whole document.
targetValue
Type: Object
The JSON payload you validate against using ajv
.