我在 Node 中使用 restify 框架实现了一个用于测试目的的项目,并实现了一个 GET API。 但我不知道如何将 swagger 与 restify 框架集成。 有很多关于 swagger 与 express 集成的博客.. 我点击了类似
的链接请帮助我如何集成。
最佳答案
对于走到这一步的每个人,包括我,我假设您使用的是 restify 而不是 express,并且还没有找到简单的答案。我有一个使用 restify 的 API 服务器,在运行我的服务器之前使用 typescript 编程并将文件转换为 javascript,所有这些都在 Docker 容器中。经过大量搜索,我设法解决了我的问题,如下所示:
安装“swagger-autogen”包。
使用以下命令创建名为“swagger.ts”的文件:
const swaggerAutogen = require('swagger-autogen')()
const outputFile = '../swagger_output.json'
const endpointsFiles = ['../routes/users.router.ts'] // root file where the route starts.
swaggerAutogen(outputFile, endpointsFiles)
.then(() => {
require('./dist/src/app.js') // Your project's root file
})
// #swagger.path = "/users"
// #swagger.tags = ['User']
// #swagger.description = 'Endpoint to create a user.'
/*
#swagger.responses[201] = {
schema: { "$ref": "#/definitions/User" },
description: "User was successfully created." }
*/
注意:要了解有关这些 swagger-autogen 评论标签的更多信息,请参阅: https://github.com/davibaltar/swagger-autogen#swagger-20
注意:请记住,如果您不从 typescript 中的脚本自动生成 javascript 文件,则需要完全使用 javascript 而不是 typescript 创建您的结构。注意文件名和扩展名。
node ./dist/src/server/swagger.js // change to your path
当您执行此操作时,将创建一个包含您的应用程序详细信息的 swagger_output.json 文件。
文件生成后,您需要安装“swagger-ui-restify”包。
将这些命令放在中间件所在的位置(通常在应用程序启动时):
const swaggerUi = require("swagger-ui-restify")
const swaggerDocument = require("../swagger_output.json")
const swaggerOptions = {
explorer: true,
baseURL: 'api-docs',
}
app.get("/api-docs"+'/*', ...swaggerUi.serve)
app.get("/api-docs", swaggerUi.setup(swaggerDocument, swaggerOptions))
现在您的应用程序有一个中间件来查阅自动生成的文档。
https://stackoverflow.com/questions/57203086/
相关文章:
react-native - 如何在切换到 react-navigation 之前预呈现组件?
javascript - `npm install`后出现关于python语法错误的错误?
spring-boot - Spring Boot 可执行 jar 通过 Azure devops
reactjs - 添加具有 Material 表的组件会更改 Material-UI AppBar
angular - Froala 编辑器 formControl 在第二次加载后不更新
python - AWS Lambda——无法为 SpaCy 导入 srsly.ujson.ujso
amazon-web-services - 如何使用 aws Lambda 将多个相关文件作为一个组