With this package you can easy connect your openapi spec to controllers.
import { buildOpenapiExpress, API } from '@ponbike/openapi-express'
const app = buildOpenapiExpress({
name: 'test',
version: '1.2.3',
apis: [
API.create({
version: 'v1',
specification,
controllers,
secret: 'secret'
})
],
staticFolder: 'public',
limit: '100mb',
poweredBy: 'Pon.Bike',
loggerOptions: {
level: 'info',
loggers: [
{
type: 'console'
}
]
},
errorLogger: {
error: (error) => {
console.error(error)
}
},
origin = '*'
})
The field name should be a string.
You can get it e.g. from your package.json.
You can get it with app.get('name')
The field version should be a string.
You can get it e.g. from your package.json.
It will set the version in the header X-Version.
The field apis should be an array.
Every item should be an object that contain version, specification, controllers and can contain secret.
You can use API.create to create the object and get feedback.
The field version should be a string.
It will be used for the route.
e.g. if your version is 'v1', all routes from the specification will start with /v1/
The field specification should be an object.
It should contain the OpenAPI specification.
See also: https://swagger.io/specification/
The field controllers should be an object.
It should contain all routes.
In your OpenAPI specification you can use operationId
You should return an object with a function for evert operationId.
An example of a controller result:
{
statusCode: 200,
body: {
status: true,
version: '1.2.3',
timestamp: new Date(),
message: 'ok'
}
}
The field statusCode will be used for the http status code.
The field body should be an object or array.
The field secret should be a string, but is optional.
This will be used for the authentication.
You should send a header called x-api-key with this value
for every route where apiKey is set in the OpenAPI specification.
The field staticFolder should be a string, but is optional.
If you have some static files, e.g. a favicon, you can set here the path to the folder.
If there is a folder public in the root of the project folder, you can set the value to 'public'.
The field limit should be a string, but is optional.
The default value is 100mb.
It will set the the body parser limit, e.g. app.use(bodyParser.json({ limit: '100mb' })).
The field poweredBy should be a string, but is optional.
The default value is Pon.Bike.
It will set a header X-Powered-By.
The field origin can be set for the CORS.
The default value is *.
It will also change the cross-origin-resource-policy.
On * it will be cross-origin, else it will be same-origin