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
Best automatic swagger-ui with express.
In 5 minutes you will have swagger documentation available.
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/