JSPM

node-swagger-ui-express

1.0.3
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 189
  • Score
    100M100P100Q64162F
  • License ISC

Best automatic swagger-ui with express.

Package Exports

  • node-swagger-ui-express

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (node-swagger-ui-express) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Node Swagger-ui express

Best automatic swagger-ui with express.

In 5 minutes you will have swagger documentation available.

npm download

Features

Created for Node.js, this module has features like an application in a simple and easy way.

How to use

Installing

Node.js

npm i node-swagger-ui-express

Importing

const { ExpressSwagger } = require('node-swagger-ui-express');

Methods

We will use the three methods below to create the swagger

1. initController
Method to start controller. Used in every controller/router at the beginning of everything.
Parameters:
* controllerName - Name of controller/router
* express - instance of express
* router - instance of router
2. toSwagger
Method to include action to swagger. Used in every action you need to include in swagger.
Parameters:
* ClassResponse - class of response
* ClassRequest - class of request
3. swaggerInit
Method to start swagger. Used after route creation. It is used to create the document.
* App - App of express. Ex: const app = express();
* Version(optional) - Version of documentation or version of application
* Title(optional) - Title of documentation or description of appication 

Using

Here is an example implementation.

  • controllers/authController.js
    const { RequestAuthRegister, ResponseAuthRegister, RequestAuthAuthenticate, ResponseAuthAuthenticate } =  require('../viewModel/auth');
    const { ExpressSwagger } =  require('node-swagger-ui-express');
    const  express  =  require('express');
    const  router  =  express.Router();
    
    ExpressSwagger.initController('/api/account', express, router);
    
    router.post('/register', async (req, resp) => {
        return  resp.send("register");

}).toSwagger(ResponseAuthRegister, RequestAuthRegister);

router.put('/update', async (req, resp) => { return resp.send("global"); }).toSwagger(ResponseAuthAuthenticate, RequestAuthAuthenticate);

router.delete('/:id', async (req, resp) => { return resp.send("delete OK"); }).toSwagger(ResponseAuthAuthenticate);;

router.get('/:id', async (req, resp) => { return resp.send("get id OK"); }).toSwagger(ResponseAuthAuthenticate);

router.get('/', async(req, resp) => { return resp.send("get all OK"); }).toSwagger("");

module.exports = (app) => app.use(router.controller, router);

  • index.js
const express = require('express');
const bodyParser = require('body-parser');
const { ExpressSwagger } = require('node-swagger-ui-express');

const app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

require('./controllers/authController')(app);

ExpressSwagger.swaggerInit(app);
app.listen(3200);
  • viewModel/auth.js
class RequestAuthRegister {
    constructor() {
        this.email = "";
        this.password = "";
        this.id = 0;
    }
}

class ResponseAuthRegister {
    constructor() {
        this.hash = "";
    }
}

class RequestAuthAuthenticate {
    constructor() {
        this.user = "";
        this.password = "";
    }
}

class ResponseAuthAuthenticate {
    constructor() {
        this.token = "";
    }
}

module.exports.ResponseAuthRegister = ResponseAuthRegister;
module.exports.RequestAuthRegister = RequestAuthRegister;
module.exports.RequestAuthAuthenticate = RequestAuthAuthenticate;
module.exports.ResponseAuthAuthenticate = ResponseAuthAuthenticate;
  • Swagger-UI http://localhost:3200/swagger-ui/

Example

https://github.com/egama/Example-node-swagger-ui-express