首页 > 解决方案 > 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"));

有什么我想念的吗?

标签: asp.net-coreswagger-ui

解决方案


事实证明你不能,如果你想引用本地 .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")));

推荐阅读