Skip to content
Swagger annotations for your express project
TypeScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs add example Dec 8, 2019
example add example Dec 8, 2019
src fix typings in utils Dec 7, 2019
.gitignore Initial commit Dec 7, 2019
LICENSE Initial commit Dec 7, 2019
README.md add example Dec 8, 2019
package.json bumped version Dec 7, 2019
tsconfig.json add example Dec 8, 2019
tslint.json add code Dec 7, 2019
yarn.lock add code Dec 7, 2019

README.md

mgr-swagger-express

Swagger annotations for your express project Medium article

Usage

Install

npm install mgr-swagger-express --save

or

yarn add mgr-swagger-express

Use

app.js:

import express from 'express'
import generateSwagger, { SET_EXPRESS_APP } from 'mgr-swagger-express'

const app = express()
SET_EXPRESS_APP(app)

import MyResource from './resource.service' // Note, the import should happen AFTER the SET_EXPRESS_APP call

const swaggerDocument = generateSwagger({
  name: "My Service Name",
  version: "0.0.1",
  description: "My Service Description",
  host: `localhost:5000`,
  basePath: '/',
})

app.use(
  '/swagger',
  swaggerUI.serve,
  swaggerUI.setup(swaggerDocument));
}

resource.service.js:

import { GET, POST, addSwaggerDefinition } from "mgr-swagger-express"

const ResourceDescription = {
  type: 'object',
  properties: {
    id: 'string',
    name: 'string'
  }
}

const ResourceStatus = {
  type: 'object',
  properties: {
    status: {
      type: 'string',
      enum: ['running', 'failed', 'stopped']
    }
  }
}

export default class BotService {
  constructor() {
    addSwaggerDefinition('ResourceDescription', ResourceDescription)
    addSwaggerDefinition('ResourceStatus', ResourceStatus)
  }

  @GET({
    path: '/resource',
    description: 'Get all resources available',
    tags: ['Resources'],
    success: '#/definitions/ResourceDescription',
  })
  public async getAvailableResources(args, context) {
    return []
  }

  @POST({
    path: '/resource/{resourceId}',
    description: 'Update resource by ID and get its status',
    parameters: [{
      name: 'resourceId',
      description: 'Resource ID',
    }],
    tags: ['Resources'],
    success: '#/definitions/ResourceStatus'
  })
  public async updateResource(args, context) {
    return {
      status: 'failed'
    }
  }
}
You can’t perform that action at this time.