首页 文章

基于模块的多个API endpoints

提问于
浏览
0

我使用ASP.NET Boilerplate v2.0.1与.NET Core和Angular 2项目模板 .

我的项目中有多个模块,目前使用相同的API endpoints 提供服务 . 请注意,将来我将为单个模块提供单独的API endpoints .

由于每个模块的API endpoints 都相同,因此通过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");
});

这样,我就可以生成两个 endpoints ,如下所示:

http://localhost:5000/swagger/module1/swagger.json

http://localhost:5000/swagger/module2/swagger.json

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

请纠正我或建议一种实现功能的方法 .

1 回答

相关问题