Package type: module (native node ESM ending in .js)
Feature
Allow access to response param in errorTransformer so the error can be more informative. As a work-around I overwrite the validateResponse method to 'cache' the last response on validator.lastTarget, so I can log the erroneous value together with the rest of the error:
const validator = new OpenAPIResponseValidator({
components,
responses: { '200': components.responses.Data },
definitions: components.schemas,
errorTransformer: function(openapiError, ajvError) {
const keypath = openapiError.path.replace(/\//g, '.')
const pathparts = keypath.split('.')
let value = validator.lastTarget
for (let i = 0; i < pathparts.length; i++) {
if (!value) break
value = value[pathparts[i]]
}
return `Error: Target ${keypath} ${openapiError.message}. Target ${keypath} value is: ${JSON.stringify(value, null, 2)}`
}
})
// overwrite and store last validated target for error reporting
validator.validateResponse = function(statusCode, context) {
validator.lastTarget = context
return OpenAPIResponseValidator.default.prototype.validateResponse.call(this, statusCode, context)
}
console.log(validator.validateResponse(invalidData))
// {
// message: 'The response was not valid.',
// errors: [
// 'Error: Target data.items.2.instance must be object. Target data.items.2.instance value is: true'
// ]
// }
Context
.js
)Feature
Allow access to response param in errorTransformer so the error can be more informative. As a work-around I overwrite the
validateResponse
method to 'cache' the last response onvalidator.lastTarget
, so I can log the erroneous value together with the rest of the error: