Express 如何将路由控制器与swagger ui一起使用?

Express 如何将路由控制器与swagger ui一起使用?,express,swagger-ui,routing-controllers,Express,Swagger Ui,Routing Controllers,我不明白,如何使用路由控制器的招摇过市用户界面 我试过: @Controller(“/api docs”) @UseBefore(swagger.service)//错误:没有与此调用匹配的重载 类摇摆控制器{ @获取(“/”) @UseBefore(swagger.setup(swaggerJson)) public-swaggerUi():void{} } 但我得到了swagger.service的错误(没有重载匹配此调用) 现在,我做到了: //server.ts 常量app=expre

我不明白,如何使用路由控制器的招摇过市用户界面

我试过:

@Controller(“/api docs”)
@UseBefore(swagger.service)//错误:没有与此调用匹配的重载
类摇摆控制器{
@获取(“/”)
@UseBefore(swagger.setup(swaggerJson))
public-swaggerUi():void{}
}
但我得到了swagger.service的错误(没有重载匹配此调用)

现在,我做到了:

//server.ts
常量app=express();
useExpressServer(应用程序,{/*控制器、中间件、选项*/});
app.use('/api docs',swagger.service,swagger.setup(swaggerJson));
它可以工作,但这是不正确的实现(我认为)


如何在这种情况下使用现有的中间件?

正如文档中所建议的,这似乎是正确的实现

如文档中所述,您可以使用通用Express middlwares预先配置Express应用程序,然后使用
useExpressServer(应用程序,…

无需创建任何专用控制器,只需将其添加为
功能
中间件即可

我正在使用Routing Controller/Express typescript项目 以这种方式配置Swagger(使用YML openAPI文件,但可以是JSON) 另外),除了在路由控制器设置之前配置express:

import*作为“swagger ui express”中的swagger ui;
从“YAML”导入*作为YAML;
...
{
常量app=express();
...
//装载YML摇杆规格
const buf=wait fs.promises.readFile(path.join(uu dirname,“../install/openapi.yml”);
const openApi=YAML.parse(buf.toString());
//将swaggerUI设置为Express中间件
app.use(“/api docs”、swaggerUi.service、swaggerUi.setup(openApi));
//然后设置路由控制器
useExpressServer(应用程序,{。。。
...
}