多个swaggerUi与单个快递应用程序

An-*_*oid 6 node.js express swagger typescript openapi

我正在尝试找到一个解决方案,使用一个快速应用程序拥有多个swaggerUi文档.

我正在使用 :

"typescript": "^2.5.2",
"swagger-tools": "^0.10.1",
"express": "^4.15.3",
"express-openapi": "^1.0.1",
Run Code Online (Sandbox Code Playgroud)

我的swagger doc文件部分是使用项目文件架构生成的.

我怎样才能做到这一点 ?

编辑---

现在我正在这样初始化swaggerUi:

const openapi = Openapi.initialize({
    paths: openApiPaths,
    expressApp,
    swaggerApiDoc,
  });
const openApiSpec: any = openapi.apiDoc;
app.use(swaggerUI(openApiSpec));
Run Code Online (Sandbox Code Playgroud)

哪里openApiPaths包含paths:{}swagger doc

Suk*_*man 6

截至 2022 年,您可以向同一应用程序添加多个 swagger UI。来自swagger-UI 文档

要使用不同的 swagger 文档运行 2 个 swagger ui 实例,请使用serveFiles 函数而不是serve 函数。serveFiles 函数与 setup 函数具有相同的签名。

const express = require('express');
const app = express();
const swaggerUi = require('swagger-ui-express');
const swaggerDocumentOne = require('./swagger-one.json');
const swaggerDocumentTwo = require('./swagger-two.json');

var options = {}

app.use('/api-docs-one', swaggerUi.serveFiles(swaggerDocumentOne, options), swaggerUi.setup(swaggerDocumentOne));

app.use('/api-docs-two', swaggerUi.serveFiles(swaggerDocumentTwo, options), swaggerUi.setup(swaggerDocumentTwo));
Run Code Online (Sandbox Code Playgroud)


Gab*_*leu 0

您可以在单个 Express 服务器上托管多个 api,只需确保 basePath彼此不重叠即可。

参考: https: //github.com/apigee-127/swagger-tools/issues/530

swaggerTools.initializeMiddleware(doc1, function (mw1) {
  // Do stuff with first middleware

  swaggerTools.initializeMiddleware(doc2, function (mw2) {
    // Do stuff with second middleware

    // Repeat...
  });
});
Run Code Online (Sandbox Code Playgroud)

参考: https: //github.com/apigee-127/swagger-tools/issues/513