openapi-connect
Version:
Base for microservices around OpenAPI/Swagger
41 lines (34 loc) • 1.87 kB
Markdown
# Base for microservices around OpenAPI/Swagger
* Use [Swagger 2.0](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md) ([OpenAPI](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md) in feature) specification as source of trues about all aspects of service like security/validation/routing/etc (thanks [swagger-tools](https://github.com/apigee-127/swagger-tools))
* Support OpenID/OAuth
* Support request logging
* Base implementation for service health checking
* Base graceful shutdown implementation
Almost all middleware like (OAuth/CORS/request logging/etc) can be overridden through options.
## Steps to use
* According to API first approach write OpenAPI/Swagger specification for your service and save it to something like `./api/public.yaml`
* `npm i openapi-connect` to install
* Write `intex.ts` or `index.js` as
```javascript
import server, { IOptions } from 'openapi-connect'
const options: IOptions = {
basePath: env.BASE_PATH,
port: env.PORT,
logger: getLogger(), // instance of logger implemented contract from loggerism package
router: {
controllers: './bin/controllers' // path to folder where we request handlers can be found or object like { [operationName: string]: RequestHandler }
},
// in case OpenID/OAuth required
oauth: {
enable: true,
url: env.OAUTH_SERVICE_URL,
audience: env.OAUTH_AUDIENCE // optional
},
swaggerUI: { enable: env.ENABLE_SWAGGER_UI } // optional
}
server('./api/public.yaml', options)
```
## TODO
- [ ] Use [semantic-release](https://github.com/semantic-release/semantic-release)
- [ ] Add monitoring/instrumentation with [OpenTracing](http://opentracing.io/) compatibility like `@risingstack/opentracing-auto` or `appmetrics`
- [ ] Move to GitHub and use [Travis CI](https://travis-ci.org) for better opportunity to force open source.