如何基于应用程序项目构建Web API远程服务?

时间:2018-02-02 13:45:01

标签: c# aspnetboilerplate

我是ASP.NET Boilerplate的新手。

在ASP.NET Core文档中说过:

  

ASP.NET Boilerplate提供了创建应用程序服务的基础结构。如果要将应用程序服务作为控制器公开给远程客户端(如以前使用动态Web API执行的那样),则可以使用模块的PreInitialize方法中的简单配置轻松完成此操作。

您能否清楚说明如何将我的应用程序项目中的方法公开给远程客户端?

例如,在 Acme.SimpleTaskApp 中,有一种列出任务的方法:

public async Task<ListResultDto<TaskListDto>> GetAll(GetAllTasksInput input)
{
    var tasks = await _taskRepository
        .GetAll()
        .Include(t => t.AssignedPerson)
        .WhereIf(input.State.HasValue, t => t.State == input.State.Value)
        .OrderByDescending(t => t.CreationTime)
        .ToListAsync();

    return new ListResultDto<TaskListDto>(
        ObjectMapper.Map<List<TaskListDto>>(tasks)
    );
}

如何公开GetAll方法?那个方法的Get地址是什么?

api/GetAll

非常感谢。

1 个答案:

答案 0 :(得分:2)

来自ASP.NET Application Services as Controllers的文档:

Configuration.Modules.AbpAspNetCore()
     .CreateControllersForAppServices(
         typeof(AbpProjectNameApplicationModule).Assembly,
         moduleName: "app",
         useConventionalHttpVerbs: true
     );
  

当应用程序服务转换为MVC控制器时,其默认路由如下:/api/services/<module-name>/<service-name>/<method-name>

     

例如,如果ProductAppService定义了Create方法,则其URL将为/api/services/app/product/create(假设模块名称为“app”)。