在正常路线旁边使用 Swagger for Express
Posted
技术标签:
【中文标题】在正常路线旁边使用 Swagger for Express【英文标题】:Using Swagger for Express alongside normal routes 【发布时间】:2013-02-03 08:59:15 【问题描述】:我有兴趣使用类似 swagger-node-express 的东西来为我正在处理的项目构建 API。但是,应用程序的某些部分不是基于 api 的(而是提供 html)。有没有人知道我将如何在正常路线上使用 Swagger?
【问题讨论】:
也对这种方法感兴趣。在 Swagger/OpenAPI 中定义正常的 HTML 服务路由怎么样? 【参考方案1】:您只需要确保您的路线不与 Swagger 路线冲突,并且您的其他路线将照常处理。一种简单的方法是让 Swagger 生活在子路径下。查看有关该分数的文档:
https://github.com/wordnik/swagger-node-express
var app = express();
var subpath = express();
app.use(express.bodyParser());
app.use("/v1", subpath);
swagger.setAppHandler(subpath);
否则,您只需注意确保您在应用程序中使用的其他 URL 都不会与 Swagger URL 冲突,并且您应该能够正常定义路由和处理程序。例如。您可以使用 Swagger 在 http://localhost:8002/api-docs.json/pet
下提供文档,但让 http://localhost:8002/foo/
执行其他操作,只需以正常方式添加路由:
app.get(/foo/, function(req, res, next)
res.writeHead(200, 'Content-Type': 'text/plain');
res.end('Hello Foo\n');
)
使用子路径配置可能是最干净的方法,但您也可以自己跟踪路由,并确保 Swagger 路由不会与您应用的其余部分中的路由冲突。
【讨论】:
你不觉得这样会产生重复的代码吗?在这种情况下,我们需要为“/foo/”和“/v1/foo/”编写两个中间件。还是有其他方法可以做到?以上是关于在正常路线旁边使用 Swagger for Express的主要内容,如果未能解决你的问题,请参考以下文章
加载 API 定义失败,获取错误:未定义 /swagger/v1/swagger.json