我正在尝试使用swagger npm软件包在节点应用程序顶部设置swagger。我的端点和挥杆设置都很完美(至少几乎完美),我确实做了很多关于问题出在哪里的研究,但我找不到踪迹。 我昂首阔步的安装文件:
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const swaggerJSDoc = require('swagger-jsdoc');
const swaggerUi = require('swagger-ui-express');
const abc= require('./routes/abc');
var app = express();
const swaggerDefinition = {
info: {
title: 'Analytics Project',
version: '1.0.0',
description: 'Analytics API swagger documentation'
}
};
const options = {
swaggerDefinition,
apis: ['./routes/abc.js']
};
const swaggerSpec = swaggerJSDoc(options);
var api = require('./routes/abc');
app.use('/', api);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use('/api/v1/abc', abc);
app.use('/api/v1/abc/scatter', abc);
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));
module.exports = app;
我的终点在./routes/abc.js中定义:
var express = require('express');
var router = require('express').Router();
const request = require('request');
/**
* @swagger
* /:
* get:
* description: Endpoint for everything
*/
router.get('/', function(req, res, next) { //End point1
res.send('hello from dataservice');
});
/**
* @swagger
* /scatter:
* post:
* description: Endpoint for all variations of scatter plots
*/
router.post('/scatter', function(req, res, next) { //end point2
res.json({users: [{name: 'Timmy'}]});
});
module.exports = router;
我希望2个端点显示在页面上。但是我得到的是“规范中未定义任何操作!”错误。我想念什么?任何帮助表示赞赏。
答案 0 :(得分:2)
使api这样的完整路径apis: [__filename],
对我有用
答案 1 :(得分:2)
对我来说,当我像下面这样添加 paths
时它起作用了
* @swagger
* paths:
* /auth/login:
* post:
答案 2 :(得分:1)
您的路线引用方式可能存在问题。引用必须始终从应用程序的根目录开始。因此必须将'./routes/abc.js'
更改为'the-folder-name-in-root/routes/abc.js'
答案 3 :(得分:1)
尝试将 apis 路径从 apis: ['./routes/abc.js']
更改为 apis: [`${__dirname}/routes/abc.js`]
以使其成为根文件夹的完整路径。这对我有用。
答案 4 :(得分:0)
我通过将 URL 从 "../api/controllers/userController.js"
更改为 "./src/api/controllers/userController.js"
解决了这个问题。
因此,您必须输入从根文件夹开始的 URL。