ayo*_*oin 1 node.js express swagger
当我使用 swagger UI 发出请求时,它使用错误的 URL,但是当我在浏览器上发出请求并使用 http://localhost:8080/client/getRecord/?id=j9jSeEYJOjWWp6V5EHP0 时,它工作得很好,因为它有“/client”路线,但在 Swagger 上没有。
\n\n对于上下文,这是我的index.js代码:
\nconst express = require(\'express\');\nconst app = express();\nconst cors=require(\'cors\');\nconst bodyParser = require(\'body-parser\');\nconst config = require("./config");\nconst swaggerUi = require(\'swagger-ui-express\')\nconst swaggerFile = require(\'./swagger/swagger_output.json\')\n\n// Defini\xc3\xa7\xc3\xa3o de rotas\nconst authRoutes = require(\'./routes/auth-routes\');\nconst arduinoRoutes = require(\'./routes/arduino-routes\');\n\nconst clientRoutes = require(\'./routes/client-routes\');\n\napp.use(\'/arduino\', arduinoRoutes);\napp.use(\'/auth\', authRoutes);\napp.use(\'/client\', clientRoutes);\n\napp.listen(config.port, () => console.log(\'App is listening on url \' + config.url));\n\napp.use(\'/doc\', swaggerUi.serve, swaggerUi.setup(swaggerFile, {explorer:true}));\n\nRun Code Online (Sandbox Code Playgroud)\n这是我的client-routes.js:
\nconst express = require(\'express\');\nconst firebase = require(\'../db\');\nconst Student = require(\'../models/record\');\nconst firestore = firebase.firestore();\n\nconst router = express.Router();\n\nrouter.get(\'/getRecord\', (req, res) => {\n // #swagger.tags = [\'Client\']\n // #swagger.summary = "Get a single record from DB through its Id"\n try {\n recordId = req.query.id;\n\n firestore.collection(\'ToDoList\').doc(recordId).get().then(function (doc) {\n console.log(doc.data().humidade);\n });\n\n res.status(200).send(doc.data())\n } catch (error) {\n res.status(400).send(error.message);\n }\n});\nmodule.exports = router;\nRun Code Online (Sandbox Code Playgroud)\n这是我的 swagger_output.json:
\n{\n "swagger": "2.0",\n "info": {\n "version": "1.0.0",\n },\n "host": "localhost:8080",\n "basePath": "/",\n "schemes": [\n "http"\n ],\n "paths": {\n "/getRecord": {\n "get": {\n "tags": [\n "Client"\n ],\n "summary": "Get a single record from DB through its Id",\n "description": "",\n "parameters": [\n {\n "name": "id",\n "in": "query",\n "type": "string"\n }\n ],\n "responses": {\n "200": {\n "description": "OK"\n },\n "400": {\n "description": "Bad Request"\n }\n }\n }\n },\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n我通过这个脚本swagger.js创建的,使用swagger-autogen:
\nconst swaggerAutogen = require(\'swagger-autogen\')()\n\nconst outputFile = \'./swagger/swagger_output.json\'\nconst endpointsFiles = [\'./routes/arduino-routes.js\', \'./routes/auth-routes.js\', \'./routes/client-routes.js\']\n\nconst doc = {\n info: {\n version: "1.0.0",\n },\n "host": "localhost:8080",\n}\n\nswaggerAutogen(outputFile, endpointsFiles, doc).then(() => {\n require(\'../index.js\')\n});\nRun Code Online (Sandbox Code Playgroud)\n我究竟做错了什么?为什么 swagger 没有获取完整的 /client/getRecord 路由?
\n您正在设置endpointsFiles所有路由器文件的列表。Swagger 不知道路由器安装在/.
不要传入路由器列表,而是传入文件index.js,其中包含有关路由器安装位置的信息:
const endpointsFiles = ['./index.js'];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |