我的节点应用程序创建了三个不同的快速服务器,每个都侦听不同的端口。每台服务器都有一组不同的 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 中?