1

我的节点应用程序创建了三个不同的快速服务器,每个都侦听不同的端口。每台服务器都有一组不同的 API,三台服务器之间有一些共同点。还有一个 swagger.yaml 文件,其中应包含要路由的任何 API 的文档。我想确保在启动应用程序之前每个 API 都记录在这个 swagger 文件中,如果有任何 API 被路由到服务器但没有记录,它就会失败。

到目前为止,我已经尝试了各种中间件来验证和路由基于 swagger 文档的 API。但是,据我发现,验证功能仅检查 swagger 文件中是否存在任何语法或格式错误,并且路由会根据 swagger.yaml 完全更新应用程序的路由。即前面的逻辑被删除。例子:

let swagger = require('swagger-tools');
let YAML = require('yamljs');

let app1 = express();
let app2 = express();
let app3 = express();

//There is logic here that routes various endpoints to each app

let swaggerDocument = YAML.load("./swagger/swagger.yaml");

swagger.initializeMiddleware(swaggerDocument, function (middleware) {    

    app3.use(middleware.swaggerMetadata());

    app3.use(middleware.swaggerValidator({
        validateResponse: true
    }));

    app3.use(middleware.swaggerRouter({useStubs: true, contoller: 
    '/controllers'}));

    app3.use(middleware.swaggerUi());

    let server1 = http.createserver1(app1);
    server1.listen(app1.get('port'), function() {
    });

    let server2 = http.createServer(app2);
    server2.listen(app2.get('port'), function() {
    });

    let server3 = http.createServer(app3);
    server3.listen(app3.get('port'), function() {
    });
});

如何保持与 app1、app2 和 app3 关联的正确端点,但确保它们位于 swagger.yaml 中?

4

0 回答 0