Introduction to swagger-jsdoc
swagger-jsdoc is an incredible tool designed to simplify the integration of Swagger/OpenAPI documentation into your Node.js-based applications. It leverages JSDoc syntax to generate complete and easy-to-read API documentation automatically. In this comprehensive guide, we’ll explore various features and capabilities of swagger-jsdoc through numerous practical examples. This guide will help you optimize your API documentation for better SEO, enhancing your online presence effectively.
Setting Up swagger-jsdoc
First, let’s start with installing the swagger-jsdoc package in your Node.js application:
npm install swagger-jsdoc
Basic Configuration
Here’s how you can set up a basic configuration for swagger-jsdoc:
const swaggerJsdoc = require('swagger-jsdoc');
const options = {
definition: {
openapi: '3.0.0',
info: {
title: 'Sample API',
version: '1.0.0',
},
},
apis: ['./routes/*.js'], // files containing annotations
};
const specs = swaggerJsdoc(options);
module.exports = specs;
Documenting API Endpoints
Let’s annotate our API endpoints to include them in the generated documentation. Here’s a sample Express route:
/**
* @swagger
* /users:
* get:
* summary: Retrieve a list of users
* responses:
* 200:
* description: A list of users
*/
router.get('/users', (req, res) => {
// Retrieve and send user data
});
Adding Parameters and Responses
Detailed parameter and response documentation is essential. Here’s an enhanced version of our endpoint:
/**
* @swagger
* /users:
* get:
* summary: Retrieve a list of users
* parameters:
* - in: query
* name: limit
* schema:
* type: integer
* description: Limit the number of users
* responses:
* 200:
* description: A list of users
* content:
* application/json:
* schema:
* type: array
* items:
* type: object
* properties:
* id:
* type: integer
* name:
* type: string
*/
router.get('/users', (req, res) => {
// Retrieve and send user data
});
Comprehensive API Example
Let’s see a more comprehensive example involving multiple endpoints, schemas, and models:
/**
* @swagger
* components:
* schemas:
* User:
* type: object
* required:
* - id
* - name
* properties:
* id:
* type: integer
* name:
* type: string
*
* /users:
* get:
* summary: Retrieve a list of users
* responses:
* 200:
* description: A list of users
* content:
* application/json:
* schema:
* type: array
* items:
* $ref: '#/components/schemas/User'
* post:
* summary: Create a new user
* requestBody:
* required: true
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/User'
* responses:
* 201:
* description: The created user
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/User'
*/
router.post('/users', (req, res) => {
// Create and send user data
});
Integrating with an Express App
Finally, integrate swagger-jsdoc with Swagger UI in your Express application:
const express = require('express');
const swaggerUi = require('swagger-ui-express');
const specs = require('./swagger-jsdoc');
const app = express();
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(specs));
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
With swagger-jsdoc, maintaining up-to-date documentation for your API is simpler than ever. This enhanced documentation will not only improve your development workflow but will also boost your SEO by providing comprehensive and well-structured API documentation.
Hash: 3fb4a98521c304604bdab5f3fe419551dc56ea4f7d0cc1bf11a449f2521c8611