Express middleware for validating Swagger and OpenAPI specifications
npm install --save openapi-validation-middleware
create(Object schema)
Create aValidator
instance for a specified schema. Used internally, but available to those that desire to create their own middleware.schema
=Object
A fully qualified and valid OpenAPI/Swagger schema
errorMiddleware(Error err, Request req, Response res, Function next)
Drop-in middleware for handling input errors created by the validation middlewaremiddleware(Object options)
options
schema
= A fully qualified and valid OpenAPI/Swagger schemaresponse
=ResponseCallback|Boolean
If aResponseCallback
is passed, the function is called and returns a falsey result, the response is handled and any errors are returned with a status of 500. If the function returns a truthy value, the function is expected to have handled the response as desired and no further action is taken. If a truthyBoolean
is passed, the response is handled as if theResponseCallback
returned falsey.request
=RequestErrorHandler
Optionally overrides normal error handling
-
function MiddlewareFunction(Request req, Response res, Function next)
-
function ResponseCallback(ValidationErrors error, Response res, Object options)
-
function RequestErrorHandler(ValidationErrors error, Response res, Function next)
-
class ValidationErrors
request
=Object
references the request passed to the middlewarepath
=String
the original OpenAPI/Swagger path name. ex:/special/{path}
operation
=Object
the Path object from the schemaerrors
=Array
containing one or moreValidationError
objects
-
class ValidationError
code
/name
=String
the code used to create the error messagevalue
=Mixed
the value that failed validationinfo
=Object
data about the validationmessage
=String
the message created based on thecode
,info
, andvalue
-
class Validator
- public
MiddlewareFunction getRequestValidator(Request req, ResponseCallback|Boolean validateResponse)
- public
const express = require('express');
const { middleware, errorMiddleware } = require('openapi-validation-middleware');
const options = {
schema: require('./test/fixtures/swagger.json'),
response(error, res, { code, data, headers, body, encoding, operation }) {
// if you only log errors in development, instead of failing the request
// or on a particular route
if (process.env.NODE_ENV === 'development' || operation.path === '/special/{path}') {
if (error) console.error(error);
res.headers(headers).status(code).json(data);
return true;
}
if (error) {
// special error logging
return true;
}
},
request(error, res, next) {
if (error.path === '/special/{path}') {
// special handling
res.sendStatus(400);
return;
}
next(error);
}
};
const app = express();
app.use(bodyParser.json());
app.use(middleware(options));
app.use(handler);
app.use(errorMiddleware);
const server = app.listen(8194);
MIT