C# 基于模块的多API端点

C# 基于模块的多API端点,c#,.net-core,swagger,aspnetboilerplate,swashbuckle,C#,.net Core,Swagger,Aspnetboilerplate,Swashbuckle,我正在使用ASP.NET样板文件v2.0.1以及.NET核心和Angular 2项目模板 我的项目中有多个模块,它们当前使用相同的API端点提供服务。请注意,将来我将为单个模块提供单独的API端点 由于每个模块的API端点相同,因此通过NSwag生成的服务代理将拥有所有模块的服务 我需要基于单个模块生成代理,因此为此,我考虑使用API版本控制来完成。因此,我将附加模块名,而不是v1、v2等 我有以下代码: Configuration.Modules.AbpAspNetCore()

我正在使用ASP.NET样板文件v2.0.1以及.NET核心和Angular 2项目模板

我的项目中有多个模块,它们当前使用相同的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");
});
这样,我可以生成两个端点,如下所示:

但两者都拥有所有模块的信息


请纠正我的错误或建议实现该功能的方法。

看起来您使用的是Swashback而不是NSwag来生成您的swagger文档。有多种方法可以按版本分隔文档,请参见Swashback文档。默认方法是使用上面的启动配置,并用相应的ApiExplorer组名修饰方法。组名需要与swaggerdoc配置中指定的第一个参数匹配

[ApiExplorerSettings(GroupName = "module1")] //Module 1 Method
第二个招摇过市端点的模块中也缺少“e”

见示例: