openapi-validation-middleware
v3.0.0
Published
Create validation tools for validating requests/responses of OpenAPI and Swagger documented processes in express-style middleware
Readme
OpenAPI Validation Middleware
Express middleware for validating Swagger and OpenAPI specifications
* only Swagger 2.0 is currently supported
Install
npm install --save openapi-validation-middlewareAPI
create(Object schema)Create aValidatorinstance for a specified schema. Used internally, but available to those that desire to create their own middleware.schema=ObjectA 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)optionsschema= A fully qualified and valid OpenAPI/Swagger schemaresponse=ResponseCallback|BooleanIf aResponseCallbackis 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 truthyBooleanis passed, the response is handled as if theResponseCallbackreturned falsey.request=RequestErrorHandlerOptionally overrides normal error handling
Data types
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 ValidationErrorsrequest=Objectreferences the request passed to the middlewarepath=Stringthe original OpenAPI/Swagger path name. ex:/special/{path}operation=Objectthe Path object from the schemaerrors=Arraycontaining one or moreValidationErrorobjects
class ValidationErrorcode/name=Stringthe code used to create the error messagevalue=Mixedthe value that failed validationinfo=Objectdata about the validationmessage=Stringthe message created based on thecode,info, andvalue
class Validator- public
MiddlewareFunction getRequestValidator(Request req, ResponseCallback|Boolean validateResponse)
- public
Example
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);License
MIT
