如何在 Swagger 中为每个控制器创建一个新地址
How to create a new address for each controller in Swagger
我有两个控制器,分别是 TestController
和 Test2Controller
。我怎么能大摇大摆地让这两个控制器出现在 2 个单独的 url 中,例如 TestController
它的地址是
baseurl/docs/test/index.html
对于 Test2Controller
用
baseurl/docs/test2/index.html
测试控制器:
[Route("api/[controller]")]
[ApiExplorerSettings(GroupName = "Test")]
public class TestController : ControllerBase
{
[ApiExplorerSettings(IgnoreApi = false)]
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
测试控制器:
[Route("api/[controller]")]
[ApiExplorerSettings(GroupName = "Test2")]
public class Test2Controller : ControllerBase
{
[ApiExplorerSettings(IgnoreApi = false)]
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
StartUp.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("Test", new OpenApiInfo());
c.SwaggerDoc("Test2", new OpenApiInfo());
}
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/Test/swagger.json", "Test");
c.SwaggerEndpoint("/swagger/Test2/swagger.json", "Test2");
});
}
没有直接的方法可以实现您提到的 URL 路线。但是,您可以将它们分组,并为 2 个不同的控制器提供不同的 Swagger 文档。
按照以下步骤操作:
第 1 步: 如下所示在 ApiExplorer 设置中对您的控制器进行分组并给出组名。
''--- Controller 1
[Route("api/[controller]")]
[ApiExplorerSettings(GroupName = "test1")]
public class TestController1 : Controller
{
// GET: api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
''--- Controller 2
[Route("api/[controller]")]
[ApiExplorerSettings(GroupName = "test2")]
public class TestController2 : Controller
{
// GET: api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
Step2:在startup.cs
的ConfigureServices中的AddSwaggerGen中添加两个swagger文件
services.AddSwaggerGen(c => {
c.SwaggerDoc("test1", new OpenApiInfo
{
Title = "test1",
Version = "v1"
});
c.SwaggerDoc("test2", new OpenApiInfo
{
Title = "test2",
Version = "v2"
});
});
步骤 3: 配置 AddSwaggerUI 端点
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/test1/swagger.json", "test1");
c.SwaggerEndpoint("/swagger/test2/swagger.json", "test2");
});
完成此配置后,当您 运行 使用 https://baseurl/swagger 的 Swagger 文档时,您将在右上角看到 2 个选项 select 定义
您现在可以使用以下 URL 访问控制器特定的 swagger 文档
https://baseurl/swagger/index.html?urls.primaryName=test1 -- test controller1
https://baseurl/swagger/index.html?urls.primaryName=test2 -- test controller2
同样,要访问 Swagger json 文件,请使用下面的 URLs
https://baseurl/swagger/test1/swagger.json -- test controller1
https://baseurl/swagger/test2/swagger.json -- test controller2
我有两个控制器,分别是 TestController
和 Test2Controller
。我怎么能大摇大摆地让这两个控制器出现在 2 个单独的 url 中,例如 TestController
它的地址是
baseurl/docs/test/index.html
对于 Test2Controller
用
baseurl/docs/test2/index.html
测试控制器:
[Route("api/[controller]")]
[ApiExplorerSettings(GroupName = "Test")]
public class TestController : ControllerBase
{
[ApiExplorerSettings(IgnoreApi = false)]
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
测试控制器:
[Route("api/[controller]")]
[ApiExplorerSettings(GroupName = "Test2")]
public class Test2Controller : ControllerBase
{
[ApiExplorerSettings(IgnoreApi = false)]
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
StartUp.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("Test", new OpenApiInfo());
c.SwaggerDoc("Test2", new OpenApiInfo());
}
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/Test/swagger.json", "Test");
c.SwaggerEndpoint("/swagger/Test2/swagger.json", "Test2");
});
}
没有直接的方法可以实现您提到的 URL 路线。但是,您可以将它们分组,并为 2 个不同的控制器提供不同的 Swagger 文档。 按照以下步骤操作:
第 1 步: 如下所示在 ApiExplorer 设置中对您的控制器进行分组并给出组名。
''--- Controller 1
[Route("api/[controller]")]
[ApiExplorerSettings(GroupName = "test1")]
public class TestController1 : Controller
{
// GET: api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
''--- Controller 2
[Route("api/[controller]")]
[ApiExplorerSettings(GroupName = "test2")]
public class TestController2 : Controller
{
// GET: api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
Step2:在startup.cs
的ConfigureServices中的AddSwaggerGen中添加两个swagger文件 services.AddSwaggerGen(c => {
c.SwaggerDoc("test1", new OpenApiInfo
{
Title = "test1",
Version = "v1"
});
c.SwaggerDoc("test2", new OpenApiInfo
{
Title = "test2",
Version = "v2"
});
});
步骤 3: 配置 AddSwaggerUI 端点
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/test1/swagger.json", "test1");
c.SwaggerEndpoint("/swagger/test2/swagger.json", "test2");
});
完成此配置后,当您 运行 使用 https://baseurl/swagger 的 Swagger 文档时,您将在右上角看到 2 个选项 select 定义
您现在可以使用以下 URL 访问控制器特定的 swagger 文档
https://baseurl/swagger/index.html?urls.primaryName=test1 -- test controller1
https://baseurl/swagger/index.html?urls.primaryName=test2 -- test controller2
同样,要访问 Swagger json 文件,请使用下面的 URLs
https://baseurl/swagger/test1/swagger.json -- test controller1
https://baseurl/swagger/test2/swagger.json -- test controller2