1.0.3 • Published 6 years ago

node-swagger-ui-express v1.0.3

Weekly downloads
4
License
ISC
Repository
github
Last release
6 years ago

Node Swagger-ui express

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