【发布时间】:2018-04-01 16:45:33
【问题描述】:
我正在使用带有 .NET Core 和 Angular 2 项目模板的 ASP.NET Boilerplate v2.0.1。
我的项目中有多个模块,当前使用相同的 API 端点提供服务。请注意,将来我将为单个模块设置单独的 API 端点。
由于每个模块的 API 端点都是相同的,因此通过 NSwag 生成的服务代理将拥有所有模块的服务。
我需要基于单个模块生成代理,所以为此,我想到了使用 API 版本控制来完成。因此,我将附加模块名称,而不是 v1、v2 等。
我有以下代码:
Configuration.Modules.AbpAspNetCore()
.CreateControllersForAppServices(
typeof(Module).GetAssembly(),
"modulename"
);
services.AddSwaggerGen(options =>
{
options.SwaggerDoc("module1", new Info { Title = "Module 1", Version = "module1" });
options.SwaggerDoc("module2", new Info { Title = "Module 2", Version = "module2" });
}
app.UseSwagger(options =>
{
options.RouteTemplate = "swagger/{documentName}/swagger.json";
});
// Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/module1/swagger.json", "Module 1");
options.SwaggerEndpoint("/swagger/module2/swagger.json", "Module 2");
});
这样,我可以生成如下两个端点:
http://localhost:5000/swagger/module1/swagger.json
http://localhost:5000/swagger/module2/swagger.json
但两者都拥有所有模块的信息。
请纠正我或提出实现该功能的方法。
【问题讨论】:
标签: c# .net-core swagger aspnetboilerplate swashbuckle