Bird
Raised Fist0
Expressframework~10 mins

swagger-jsdoc setup in Express - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import swagger-jsdoc in an Express app.

Express
const swaggerJSDoc = require('[1]');
Drag options to blanks, or click blank then click option'
Aswagger-ui-express
Bexpress
Cswagger-jsdoc
Dbody-parser
Attempts:
3 left
💡 Hint
Common Mistakes
Importing 'express' instead of 'swagger-jsdoc'.
Using 'swagger-ui-express' which is for UI, not spec generation.
2fill in blank
medium

Complete the code to define the swagger-jsdoc options object.

Express
const options = {
  definition: {
    openapi: '[1]',
    info: {
      title: 'API Docs',
      version: '1.0.0'
    }
  },
  apis: ['./routes/*.js']
};
Drag options to blanks, or click blank then click option'
A2.0
B3.0.0
C1.0
Dlatest
Attempts:
3 left
💡 Hint
Common Mistakes
Using '2.0' which is an older Swagger version.
Using 'latest' which is not a valid version string.
3fill in blank
hard

Fix the error in creating the swaggerSpec variable.

Express
const swaggerSpec = swaggerJSDoc([1]);
Drag options to blanks, or click blank then click option'
Aoptions
BswaggerOptions
Cconfig
Doptions()
Attempts:
3 left
💡 Hint
Common Mistakes
Calling options as a function when it is an object.
Passing a wrong variable name.
4fill in blank
hard

Fill both blanks to set up swagger-ui-express middleware in Express.

Express
const swaggerUi = require('[1]');
app.use('/api-docs', swaggerUi.[2](swaggerSpec));
Drag options to blanks, or click blank then click option'
Aswagger-ui-express
Bswagger-jsdoc
Csetup
Dserve
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'swagger-jsdoc' instead of 'swagger-ui-express'.
Using 'serve' instead of 'setup' for the middleware that takes the spec.
5fill in blank
hard

Fill all three blanks to complete the swagger-jsdoc setup and serve docs at '/docs'.

Express
const swaggerUi = require('[1]');
const swaggerSpec = swaggerJSDoc([2]);
app.use('[3]', swaggerUi.serve, swaggerUi.setup(swaggerSpec));
Drag options to blanks, or click blank then click option'
Aswagger-ui-express
Boptions
C/docs
Dswagger-jsdoc
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up package names.
Using wrong route path like '/api-docs'.

Practice

(1/5)
1. What is the main purpose of swagger-jsdoc in an Express app?
easy
A. To connect to a database
B. To handle HTTP requests and responses
C. To generate API documentation from comments in your code
D. To serve static files like images and CSS

Solution

  1. Step 1: Understand swagger-jsdoc role

    swagger-jsdoc reads specially formatted comments in your Express code to create API documentation automatically.
  2. Step 2: Compare with other options

    Handling HTTP requests is Express's job, not swagger-jsdoc. Database connection and serving static files are unrelated tasks.
  3. Final Answer:

    To generate API documentation from comments in your code -> Option C
  4. Quick Check:

    swagger-jsdoc = API docs generator [OK]
Hint: swagger-jsdoc creates docs from code comments [OK]
Common Mistakes:
  • Confusing swagger-jsdoc with Express routing
  • Thinking swagger-jsdoc manages databases
  • Assuming swagger-jsdoc serves static files
2. Which of the following is the correct way to import and initialize swagger-jsdoc in an ES modules-based Express app?
easy
A. import swaggerJSDoc from 'swagger-jsdoc'; const specs = swaggerJSDoc(options);
B. const swaggerJSDoc = require('swagger-jsdoc'); const specs = swaggerJSDoc();
C. const swaggerJSDoc = require('swagger-jsdoc'); const specs = swaggerJSDoc(options);
D. import swaggerJSDoc from 'swagger-jsdoc'; const specs = swaggerJSDoc();

Solution

  1. Step 1: Use modern ES module import

    In modern Express apps using ES modules, import swaggerJSDoc from 'swagger-jsdoc' is correct.
  2. Step 2: Initialize swagger-jsdoc with options

    swaggerJSDoc requires an options object to generate specs, so calling it without arguments is incorrect.
  3. Final Answer:

    import swaggerJSDoc from 'swagger-jsdoc'; const specs = swaggerJSDoc(options); -> Option A
  4. Quick Check:

    Import + call with options = C [OK]
Hint: Use import and pass options to swaggerJSDoc() [OK]
Common Mistakes:
  • Calling swaggerJSDoc() without options
  • Using require instead of import in ES modules
  • Not assigning the result to a variable
3. Given this swagger-jsdoc options object, what will specs contain after calling swaggerJSDoc(options)?
const options = {
  definition: {
    openapi: '3.0.0',
    info: { title: 'Test API', version: '1.0.0' }
  },
  apis: ['./routes/*.js']
};
const specs = swaggerJSDoc(options);
medium
A. A string containing raw JavaScript code from './routes/*.js'
B. An object with OpenAPI info and paths extracted from comments in './routes/*.js'
C. An error because 'apis' path is incorrect
D. An empty object because no API comments exist

Solution

  1. Step 1: Understand swagger-jsdoc output

    swagger-jsdoc returns a JSON object with OpenAPI info and paths parsed from specified files.
  2. Step 2: Check options correctness

    The options specify OpenAPI version and info, and a valid path pattern for API files, so it will parse comments there.
  3. Final Answer:

    An object with OpenAPI info and paths extracted from comments in './routes/*.js' -> Option B
  4. Quick Check:

    swaggerJSDoc(options) = OpenAPI JSON object [OK]
Hint: swaggerJSDoc returns parsed OpenAPI JSON from code comments [OK]
Common Mistakes:
  • Expecting raw code instead of parsed JSON
  • Assuming error without checking file existence
  • Thinking output is empty without comments
4. Identify the error in this swagger-jsdoc setup snippet:
import swaggerJSDoc from 'swagger-jsdoc';
import swaggerUi from 'swagger-ui-express';
const options = {
  definition: {
    openapi: '3.0.0',
    info: { title: 'API', version: '1.0' }
  },
  apis: ['./api/*.js']
};
const specs = swaggerJSDoc();

app.use('/docs', swaggerUi.serve, swaggerUi.setup(specs));
medium
A. swaggerJSDoc is called without passing the options object
B. The 'apis' path should be './api/*.ts' instead of '.js'
C. swaggerUi.setup() should be called before swaggerUi.serve
D. Missing import for swaggerUi from 'swagger-ui-express'

Solution

  1. Step 1: Check swaggerJSDoc call

    The code calls swaggerJSDoc() without arguments, but it requires the options object to generate specs.
  2. Step 2: Verify other parts

    The 'apis' path is valid for JavaScript files. swaggerUi.setup() after serve is correct usage.
  3. Final Answer:

    swaggerJSDoc is called without passing the options object -> Option A
  4. Quick Check:

    Call swaggerJSDoc(options) not empty () [OK]
Hint: Always pass options to swaggerJSDoc() [OK]
Common Mistakes:
  • Calling swaggerJSDoc() without options
  • Confusing order of swaggerUi middleware
  • Ignoring missing imports
5. You want to set up swagger-jsdoc in your Express app to document APIs ONLY in routes/users.js and routes/products.js (assuming there are other .js files in the routes directory that should not be documented). Which apis option correctly includes both files for swagger-jsdoc?
hard
A. ['./routes/users.js', './routes/products']
B. ['./routes/*.js']
C. ['./routes/users.js|./routes/products.js']
D. ['./routes/users.js', './routes/products.js']

Solution

  1. Step 1: Understand 'apis' option format

    The 'apis' option is an array of file paths or glob patterns to scan for comments.
  2. Step 2: Check each option

    ['./routes/users.js', './routes/products.js'] lists both files explicitly, which is correct. ['./routes/*.js'] uses a glob that includes both files but may include others. ['./routes/users.js|./routes/products.js'] uses an invalid string with '|'. ['./routes/users.js', './routes/products'] has a missing file extension for products.js.
  3. Final Answer:

    ['./routes/users.js', './routes/products.js'] -> Option D
  4. Quick Check:

    List each file path separately in array [OK]
Hint: List each file path separately in 'apis' array [OK]
Common Mistakes:
  • Using invalid string with '|' instead of array items
  • Omitting file extensions
  • Using too broad glob patterns unintentionally
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard