#mysql #node.js #rest #swagger
Вопрос:
Это мой первый раз, когда я демонстрирую Чванство. Мне нужно руководство. Я пытаюсь реализовать swagger в своем REST api, я получаю эту ошибку
PS D:node_appstestpdfgenerategt; node index.js Not all input has been taken into account at your final specification. Here's the report: YAMLSemanticError: Implicit map keys need to be on a single line at line 1, column 1: /api/v1/listallstaff/:email ^^^^^^^^^^^^^^^^^^^^^^^^^^^… App running on Port: 7000
Остальной маршрут работает нормально, но, реализуя его в Swagger, Чтобы создать документацию, я получаю эту ошибку выше
Полный код REST api выглядит следующим образом.
var express = require('express'); var app = express(); 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; //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(bodyParser.json()); app.use(bodyParser.urlencoded({ extended:true })); //Swagger Configuration const swaggerOptions = { swaggerDefinition: { info: { title:'Employee API', version:'1.0.0' } }, apis:['index.js'], } const swaggerDocs = swaggerJSDoc(swaggerOptions); app.use('/api-docs',swaggerUI.serve,swaggerUI.setup(swaggerDocs)); app.get('/api/',function(req , res){ return res.send({error: false,message: 'Pdf Generator example'}) }); var dbConn = mysql.createPool({ host: 'localhost', user: 'root', password: '', database: 'fakeppldbpdf' }); module.exports = dbConn; /** * @swagger * /api/v1/listallstaff: * get: * description: Get all Employee * responses: * 200: * description: Success * */ app.get('/api/v1/listallstaff',function(req,res){ dbConn.query('SELECT * FROM sobreppltable',function(error, results, fields){ if(error) throw error; return res.send({ error: false, data: results, message: 'users list' }); }) }) /** * @swagger * /api/v1/listallstaff/:email * get: * description: Get all Employee by Email * responses: * 200: * description: Success * */ app.get('/api/v1/listallstaff/:email',function(req,res){ let email = req.params.email; dbConn.query('SELECT * FROM sobreppltable WHERE email =?', email,function(error, results, fields){ if(error) throw error; return res.send({ error: false, data: results[0], message: 'users list' }); }) }) app.listen(port,function(){ console.log('App running on Port: ' port); }); module.exports = app;
Что я делаю неправильно?
Ответ №1:
Исправлены добавленные фигурные скобки
/** * @swagger * /api/v1/listallstaff/{email}: * get: * description: Get all Employee by Email * responses: * 200: * description: Success * */
Решил это просто для других новичков, таких как я 🙂