Request and Response validator for OpenAPI Specification 3.
npm install --save koa-oas3
yarn add koa-oas3
By default, this library will use koa-bodyparser
to parse request body. See config of requestBodyHandler
.
import * as bodyParser from 'koa-bodyparser';
import { oas } from 'koa-oas3';
const app = new Koa();
app.use(bodyParser());
const oasMw = await oas({
file: `${__dirname}/../openapi.yaml`,
endpoint: '/openapi.json',
uiEndpoint: '/'
})
app.use(oasMw);
app.listen(8080);
file
- The absolute path to your Openapi filespec
- javascript object defining the api, either this orfile
must be given.enableUi
(default: true) - Whether to enable serving Openapi JSON and UIendpoint
(default: /openapi.json) - The endpoint for serving Openapi JSONuiEndpoint
:(default: /openapi.html) - The endpoint for serving Openapi UIvalidateResponse
:(default: false) - Validate response against Openapi schemasvalidatePaths
:(default ['/']) - Only endpoints starting with the values specified here will be validatedswaggerUiBundleBasePath
: (default use swagger-ui-dist from unpkg) - swaggerUiAssetPath needed for loading the swagger-uivalidationOptions
: Optional - options for sending to oas3-chow-chow/AJVoasValidatorOptions
: Optional - options for sending to oas-validator. https://github.com/Mermade/oas-kit/blob/main/docs/options.mdqsParseOptions: { [key: string]: any}
: Optional - Options to be passed to the query string parse command. Default:{ comma: true }
errorHandler: (error: Error, ctx: Context) => void,
: Optional - custom error hanlder.requestBodyHandler: { [key: string]: koa.Middleware }
: Optional - custom body handler. Defaults:
{
'application/json': bodyParser({
extendTypes: {
json: ['application/json']
},
enableTypes: ['json']
}),
'text/*': bodyParser({
extendTypes: {
text: ['text/*']
},
enableTypes: ['text']
}),
'application/x-www-form-urlencoded': bodyParser({
extendTypes: {
form: ['application/x-www-form-urlencoded']
},
enableTypes: ['form']
})
}
Pull requests, issues and comments welcome. For pull requests:
- Add tests for new features and bug fixes
- Follow the existing style
- Separate unrelated changes into multiple pull requests
- See the existing issues for things to start contributing.
- Generate changeset using
yarn changeset
- If there are dependency changes, update lock file with
yarn install
For bigger changes, make sure you start a discussion first by creating an issue and explaining the intended change.
Atlassian requires contributors to sign a Contributor License Agreement, known as a CLA. This serves as a record stating that the contributor is entitled to contribute the code/documentation/translation to the project and is willing to have it used in distributions and derivative works (or is willing to transfer ownership).
Prior to accepting your contributions we ask that you please follow the appropriate link below to digitally sign the CLA. The Corporate CLA is for those who are contributing as a member of an organization and the individual CLA is for those contributing as an individual.