asp.net-core - SwaggerUI Asp.Net Core - 如何引用 .json 文件
问题描述
您将如何将 swagger.json 文件添加到 SwaggerUI?到目前为止,我只能生成一个,它会在 Web 应用程序中自动“引用”自身,并且可以从 /swagger/v1/swagger.json 调用,我能找到的唯一帮助是关于 URL 路由,但是 swagger 如何找到您项目中的规格?
我还可以将多个 .json 文件添加到 SwaggerUI,文档说这样做
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "SwaggerDemo v1");
c.SwaggerEndpoint("/swagger/v2/swagger.json", "SwaggerDemo v2");
});
但这只是路由swagger在哪里找到这个JSON文件?
没有办法做这样的事情吗?
app.UseSwaggerUi3(c => c.AddSpec("./Swagger/swagger1.json"));
有什么我想念的吗?
解决方案
事实证明你不能,如果你想引用本地 .json 规范,你必须根它。
在控制器中:
[Route("api/[controller]")]
[ApiController]
public class DefaultController : ControllerBase
{
[HttpGet]
public string GetSwaggerSpec()
{
var path = Path.GetFullPath(<SWAGGER.JSON>);
StreamReader stream = System.IO.File.OpenText(path);
return stream.ReadToEnd();
}
在 Startup.cs 中:
app.UseSwaggerUi3(c => c.SwaggerRoutes.Add(new SwaggerUi3Route("All", "/api/default")));
推荐阅读
- go - 从接口通道流到类型切片
- reactjs - ag-grid 选择所有组子项
- reactjs - 在 materia ui ToolTip 中使用悬停并单击会导致关闭工具提示时出现问题
- swift - 根据设备更改字体大小
- apache-spark - Pyspark NLTK 保存输出
- devexpress - Ideablade DevForce ORM 3.8.13 与 Devexpress 18.1.13 不兼容
- performance - 我可以在这段代码中让我的敌人更快地跑向玩家吗?(统一)
- android - 如何在flutter中将数据从android模块传递到flutter模块
- vue.js - undefined 不是使用 vue-cli/vue-router 和 layout-file 的对象(评估'modules[moduleId].call')
- python - 在 Python Selenium 上向下滚动