如何在节点中将招摇与 restify 框架集成



我在node中使用restify框架实现了一个用于测试目的的项目,并实现了一个GET API。 但是我不知道如何将招摇与 restify 框架集成。 有很多博客可以大摇大摆地与快递集成。 我点击了一个链接,例如

  • https://www.npmjs.com/package/restify-swagger-jsdoc
  • https://github.com/bvanderlaan/swagger-ui-restify

请帮我如何整合。

对于到目前为止的每个人,以及我,我假设您使用的是 restify 而不是 express,并且还没有找到一个简单的答案。我有一个使用 restify 的 API 服务器,在运行我的服务器之前使用打字稿对文件进行编程并将文件转换为 javascript,所有这些都在 Docker 容器中。经过大量搜索,我设法解决了我的问题,如下所示:

  1. 安装"swagger-autogen"软件包。

  2. 使用以下命令创建一个名为"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
})
  1. 转到为您的 API 路由保留的文件(其中有 GET、POST、PATCH、...函数) - 在我的情况下'./routes/users.router.ts',并放置注释,例如:
// #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

  1. 运行以下命令:(在我的例子中,这个命令在 package.json 中的一个脚本中,在 Dockerfile 中调用):

注意:请记住,如果您没有从打字稿中的脚本自动生成javascript文件,则需要完全在javascript中创建结构,而不是在打字稿中创建。注意文件名和扩展名。

node ./dist/src/server/swagger.js // change to your path

执行此操作时,将创建一个包含应用程序详细信息的 swagger_output.json 文件。

    生成
  1. 文件后,您需要安装 "swagger-ui-restify" 软件包。

  2. 将以下命令放在中间件所在的位置(通常在应用程序启动时):

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))

现在,您的应用程序有一个中间件来查阅自动生成的文档。

最新更新