【发布时间】:2022-01-04 07:42:32
【问题描述】:
我是使用 Swagger 的新手。所以我需要某种帮助。我正在尝试使用 swagger,比如加入我用 Node.JS 编写的 Rest api 在 Postman 上测试时,REST api 工作得非常完美,但我添加了 swagger 部分,并且 Swagger 上的表单无法正常工作。应该工作的表单数据部分工作不正常。
我的完整代码是这样的
var express = require('express');
var app = express();
const cors = require("cors");
var bodyParser = require('body-parser');
var mysql = require('mysql');
const swaggerJSDoc = require('swagger-jsdoc');
const swaggerUI = require('swagger-ui-express');
var port = process.env.PORT || 7000;
const swaggerOptions = {
swaggerDefinition: {
info: {
title:'*****REST API',
version:'1.0.0'
}
},
apis:['***.js'],
}
const swaggerDocs = swaggerJSDoc(swaggerOptions);
app.use('/api-docs',swaggerUI.serve,swaggerUI.setup(swaggerDocs));
//evade cors
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.get('/api/', function (req, res) {
return res.send({ error: false, message: 'hello from api' })
});
var dbConn = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: '*****'
});
module.exports = dbConn;
//functions
/**
* @swagger
* /auth/register:
* post:
* description: Create new user
* parameters:
* - name: fullname
* - name: user
* - name: pass
*
* description: Create an new employee
* in: formData
* type: String
* responses:
* 200:
* description: Created
*
*/
app.post('/auth/register', function (req, res) {
var fullname = req.body.fullname;
var user = req.body.user;
var pass = req.body.pass;
dbConn.query('INSERT INTO users (fullname, user, pass) VALUES (?,?,?)', [fullname, user, pass], function (error, results, fields) {
if (error) throw error;
return res.send({ error: false, data: results, message: 'Account Setup Complete' });
})
})
/**
* @swagger
* /auth/login:
* post:
* description: Login User
* parameters:
* - name: user
* - name: pass
*
* description: Login User
* in: formData
* type: String
* responses:
* 200:
* description: Login
*
*/
app.post('/auth/login',function(req,res){
var user = req.body.user;
var pass = req.body.pass;
dbConn.query('SELECT * FROM users WHERE user = ? AND pass =?', [user,pass], function (error, results, fields){
if(results.length > 0){
return res.send({error:false, message: 'OK'});
}else{
return res.send({error: true, message: 'Incrorrect Login Details'});
}
});
})
app.listen(port, function () {
console.log('App running on Port: ' + port);
});
module.exports = app;
我做错了什么?有什么我需要正确输入的吗?
【问题讨论】:
-
您遇到了什么问题?目前尚不清楚...但是,有一件事是您使用的是
cors中间件,但还手动设置了 CORS 标头。不要那样做;相反,学习如何正确配置cors模块中间件。 -
@jub0bs 我想从 swagger 文档中传递参数来向人们展示如何使用其余的 api
标签: mysql node.js rest swagger