若需创建单页面应用或移动应用,可通过 WebApi 调用应用层。Abp 提供了从应用层到 WebApi 的自动映射,只需少量代码即可,无需编写重复的 Api 接口代码。
首先添加 Swagger 支持,使应用支持 WebApi 浏览和测试,在程序包管理器中增加 Swashbuckle.AspNetCore 引用。
然后在 PoemWebModule 中增加动态 WebApi 代码和对 Swagger 的支持:
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.OpenApi.Models;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Autofac;
using Volo.Abp.Modularity;
using ZL.AbpNext.Poem.Application;
using ZL.AbpNext.Poem.Core;
using ZL.AbpNext.Poem.EF;
namespace ZL.AbpNext.Poem.Web
{
[DependsOn(typeof(AbpAspNetCoreMvcModule), typeof(AbpAutofacModule), typeof(PoemCoreModule), typeof(PoemApplicationModule), typeof(PoemDataModule))]
public class PoemWebModule : AbpModule
{
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var app = context.GetApplicationBuilder();
var env = context.GetEnvironment();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
}
app.UseStaticFiles();
app.UseRouting();
app.UseSwagger();
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "BookStore API");
});
app.UseConfiguredEndpoints();
}
{
Configure<AbpAspNetCoreMvcOptions>(options =>
{
options.ConventionalControllers.Create((PoemApplicationModule).Assembly);
});
configuration = context.Services.GetConfiguration();
ConfigureSwaggerServices(context.Services);
}
{
services.AddSwaggerGen(options =>
{
options.SwaggerDoc(, OpenApiInfo { Title = , Version = });
options.DocInclusionPredicate((docName, description) => );
options.CustomSchemaIds(type => type.FullName);
});
}
}
}


