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 = ;const middleware errorMiddleware = ;const options = schema: { // if you only log errors in development, instead of failing the request // or on a particular route if processenvNODE_ENV === 'development' || operationpath === '/special/{path}' if error console; resheadersheadersstatuscode; return true; if error // special error logging return true; } { if errorpath === '/special/{path}' // special handling res; return; ; }; const app = ;app;app;app;app;const server = app;
License
MIT