Почему swagger не перенаправляет на URL, указанный мной в файле yaml?

#node.js #express #swagger #swagger-ui #swagger-jsdocs

Вопрос:

Я пытаюсь создать документацию по API swagger в express и node . Это моя часть кода, которую я выполнил .

index.js файл

 const express = require('express');
const swaggerJSDoc = require('swagger-jsdoc');
const swaggerUi = require('swagger-ui-express');
const http = require('http')

const app = express();
http.createServer(app).listen(3001)
console.log("Listening at:// port:%s (HTTP)", 3001)

const swaggerDefinition = {
    info: {
      title: 'REST API for my App', // Title of the documentation
      version: '1.0.0', // Version of the app
      description: 'This is the REST API for my product', // short description of the app
    },
  };

  const options = {
    // import swaggerDefinitions
    swaggerDefinition,
    // path to the API docs
    apis: ['./docs/*.yaml'],
  };
  // initialize swagger-jsdoc
  const swaggerSpec = swaggerJSDoc(options);
  
  // use swagger-Ui-express for your app documentation endpoint
  app.use('/docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));
 

мой файл .yaml

 host: localhost:3016
basePath: "/productRule"
schemes:
- http
consumes: []
produces: []
paths:
  "/search":
    post:
      tags:               # Tag property
        - search            # Value of the tag
      summary: search
      produces:
      - application/json
      parameters:         # request parameters
      - in: body          # request body
        name: search
      
            # name of request, can be any name
        description: It enables a user to create an account
        required: false   # can also be true depending on user preference
        schema:           # Schema definition
          $ref: '#/definitions/search' 
      responses:          # server responses
        200:
          description: An object with user details
definitions:        # Schema defination for request body
  search:
    type: object
    properties:
      search:
        type: object
        properties:
          pageSize:
            type: string
          sortBy:
            type: string
          searchQuery:
            type: string
 

Здесь я хочу вызвать api, который работает в порту 3016.
Но когда я запускаю этот сценарий, swagger вызывает порт 3001 , где я определил сценарий swagger, как показано на скриншоте .

введите описание изображения здесь

Не могли бы вы, пожалуйста, помочь мне найти, где я ошибся?

Ответ №1:

Базовый путь и URL-адрес должны быть определены в определении swagger, иначе порт по умолчанию с базовым путем будет принят в качестве пути api .

 const swaggerDefinition = {
    info: {
      title: 'REST API for my App', // Title of the documentation
      version: '1.0.0', // Version of the app
      description: 'This is the REST API for my product', // short description of the app
    },
   host: localhost:3016
   basePath: "/productRule"
  };