Skip to content

Instantly share code, notes, and snippets.

@c33k
Created September 21, 2016 20:00
Show Gist options
  • Save c33k/4523783320e3c001270129da9e58368e to your computer and use it in GitHub Desktop.
Save c33k/4523783320e3c001270129da9e58368e to your computer and use it in GitHub Desktop.
Using swagger with swagger-jsdoc module in nodejs

npm install swagger-jdsoc --save-dev

FROM ANNOTATTION TO DOCS var swaggerJSDoc = require('swagger-jsdoc'); // swagger definition var swaggerDefinition = { info: { title: 'Node Swagger API', version: '1.0.0', description: 'Demonstrating how to describe a RESTful API with Swagger', }, host: 'localhost:3000', basePath: '/', };

// options for the swagger docs var options = { // import swaggerDefinitions swaggerDefinition: swaggerDefinition, // path to the API docs apis: ['./routes/*.js'], };

// initialize swagger-jsdoc var swaggerSpec = swaggerJSDoc(options);

// serve swagger app.get('/swagger.json', function(req, res) { res.setHeader('Content-Type', 'application/json'); res.send(swaggerSpec); });

//app.use(routes-for-my-api);

Then, we copy the /dist folder from swagger-ui to out project and rename it to whatever we want (api-docs, for example). Then, we serve it with "express": app.use( express.static('api-docs') );

Change api-docs/index.html file to point to our swagger.json route. url = "localhost.com:/swagger.json"

Voi lá!

METHOD EXAMPLES FOR ANNOTATION

GET /**

  • @swagger
  • /api/puppies/{id}:
  • get:
  • tags:
    
  •   - Puppies
    
  • description: Returns a single puppy
    
  • produces:
    
  •   - application/json
    
  • parameters:
    
  •   - name: id
    
  •     description: Puppy's id
    
  •     in: path
    
  •     required: true
    
  •     type: integer
    
  • responses:
    
  •   200:
    
  •     description: A single puppy
    
  •     schema:
    
  •       $ref: '#/definitions/Puppy'
    

*/

POST /**

  • @swagger
  • /api/puppies:
  • post:
  • tags:
    
  •   - Puppies
    
  • description: Creates a new puppy
    
  • produces:
    
  •   - application/json
    
  • parameters:
    
  •   - name: puppy
    
  •     description: Puppy object
    
  •     in: body
    
  •     required: true
    
  •     schema:
    
  •       $ref: '#/definitions/Puppy'
    
  • responses:
    
  •   200:
    
  •     description: Successfully created
    

*/

PUT /**

  • @swagger
  • /api/puppies/{id}:
  • put:
  • tags: Puppies
    
  • description: Updates a single puppy
    
  • produces: application/json
    
  • parameters:
    
  •   name: puppy
    
  •   in: body
    
  •   description: Fields for the Puppy resource
    
  •   schema:
    
  •     type: array
    
  •     $ref: '#/definitions/Puppy'
    
  • responses:
    
  •   200:
    
  •     description: Successfully updated
    

*/

DELETE

/**

  • @swagger
  • /api/puppies/{id}:
  • delete:
  • tags:
    
  •   - Puppies
    
  • description: Deletes a single puppy
    
  • produces:
    
  •   - application/json
    
  • parameters:
    
  •   - name: id
    
  •     description: Puppy's id
    
  •     in: path
    
  •     required: true
    
  •     type: integer
    
  • responses:
    
  •   200:
    
  •     description: Successfully deleted
    

*/

Fonts: http://mherman.org/blog/2016/05/26/swagger-and-nodejs/#.V-LO1pMrJn5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment