openapi-connect
TypeScript icon, indicating that this package has built-in type declarations

2.5.6 • Public • Published

Base for microservices around OpenAPI/Swagger

  • Use Swagger 2.0 (OpenAPI in feature) specification as source of trues about all aspects of service like security/validation/routing/etc (thanks 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
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
  • [ ] Add monitoring/instrumentation with OpenTracing compatibility like @risingstack/opentracing-auto or appmetrics
  • [ ] Move to GitHub and use Travis CI for better opportunity to force open source.

Package Sidebar

Install

npm i openapi-connect

Weekly Downloads

760

Version

2.5.6

License

ISC

Unpacked Size

101 kB

Total Files

125

Last publish

Collaborators

  • targetprocess-user
  • shapel