3.0.11 • Published 1 year ago
@nanoexpress/middleware-schemator v3.0.11
schemator
schemator middleware for nanoexpress
You can think this middleware combine of Swagger documentation and Ajv validation like original nanoexpress built-in feature + swagger-ui middleware
Installation
npm i @nanoexpress/middleware-schemator
# or
yarn add @nanoexpress/middleware-schemator
Schema type
- YML (preferred)
- JSON
- RAW JS Object
YML
const schematorInstance = schemator({ swaggerPath: './swagger.yml' });
app.define(schematorInstance.define);
/// auth/index.js
app.get(
'/auth',
// Here any body-parser, form-data logic (all preprocess middlewares)
schematorInstance.load({
attach: '/auth',
method: 'get',
path: './auth/docs.yml'
}),
async (req) => {
// your logic here
}
);
JSON
const schematorInstance = schemator({ swaggerPath: './swagger.json' });
app.define(schematorInstance.define);
/// auth/index.js
app.get(
'/auth',
// Here any body-parser, form-data logic (all preprocess middlewares)
schematorInstance.load({
attach: '/auth',
method: 'get',
path: './auth/docs.json'
}),
async (req) => {
// your logic here
}
);
RAW JS Object
const schematorInstance = schemator({ swaggerRAW: {} });
app.define(schematorInstance.define);
/// auth/index.js
app.get(
'/auth',
// Here any body-parser, form-data logic (all preprocess middlewares)
schematorInstance.load({
attach: '/auth',
method: 'get',
raw: {
path: {
'/': {
/* infos here */
}
}
}
}),
async (req) => {
// your logic here
}
);
Example
See the examples directory
Usage
ESM Module
import schemator from '@nanoexpress/middleware-schemator';
const schematorInstance = schemator({ swaggerPath: './swagger.yml' });
app.define(schematorInstance.define);
app.get(
'/auth',
// Here any body-parser, form-data logic (all preprocess middlewares)
schematorInstance.load({
attach: '/auth',
method: 'get',
path: './auth/docs.yml'
}),
async (req) => {
// your logic here
}
);
CJS Module
const bodyParser = require('@nanoexpress/middleware-schemator/cjs');
const schematorInstance = schemator({ swaggerPath: './swagger.yml' });
app.define(schematorInstance.define);
app.get(
'/auth',
// Here any body-parser, form-data logic (all preprocess middlewares)
schematorInstance.load({
attach: '/auth',
method: 'get',
path: './auth/docs.yml'
}),
async (req) => {
// your logic here
}
);
Options
Initialize options
Options name | Default | Required | Description |
---|---|---|---|
options.swaggerPath | - | Yes or options.swaggerRAW | Swagger schema file path |
options.swaggerRAW | - | Yes or options.swaggerPath | Swagger schema RAW Object |
schematorInstance.load(options, AjvConfig)
options
Options name | Default | Required | Description |
---|---|---|---|
options.method | - | Yes | Your router method (lowercase) |
options.attach | - | Yes | Your router path (with Swagger path format) |
options.path | - | Yes or options.raw | Route Swagger schema file path |
options.raw | - | Yes or options.path | Route Swagger schema RAW Object |
See Ajv configurations for more customization
schematorInstance.render(options)
options
Options name | Default | Required | Description |
---|---|---|---|
options.title | Schemator | Yes | Swagger UI Title |
options.exposePath | - | Yes | schematorInstance.expose() path |
License
MIT