在正常路线旁边使用 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

如何在路线标题旁边的菜单抽屉中集成图标

如何在 swagger nestjs 中手动添加摘要和正文

Bug:No mapping for GET /onepill//swagger-ui.html

引入swagger项目无法正常启动--微服务环境下

for循环