openapi-validation-middleware
v3.0.0
Published
Create validation tools for validating requests/responses of OpenAPI and Swagger documented processes in express-style middleware
Downloads
27
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-middleware
API
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
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 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
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