## 简介 控制器层通常不包含业务的,我们控制器的代码经常是如下: ``` cs [HttpGet] [route("Info")] pulic IActionResult GetInfo() { retrun Ok(_service.GetInfo()); } ``` 我们不仅要创建控制器文件,还要写出应用层到控制器的方法,将业务的数据通过控制器暴露出去 > 控制器只做转发,没有做任何事情,形成了大量的冗余代码 ## 如何使用 > 推荐直接在应用层中直接使用 使用动态Api,需要3个条件 1. 任何一个类,实现`IRemoteService`接口 2. 该类需要加入DI容器 3. 在管道模型中,配置动态Api服务: > 通常我们直接继承`ApplicationService`即可,因为该类实现了`IRemoteService` ``` cs //动态Api Configure(options => { options.ConventionalControllers.Create(typeof(YiAbpApplicationModule).Assembly, options => options.RemoteServiceName = "default"); }); ``` 根据方法名自动映射Http方法及路由 例如: - GetInfo:Get请求 - UpdateInfo:Put请求 - RemoveInfo: Del请求 - CreateInfo: Post请求 ## 完整例子 ``` cs using Volo.Abp.Application.Services; namespace Yi.Abp.Application.Services { public class TestService : ApplicationService { /// /// 你好世界 /// /// /// public string GetHelloWorld(string? name) { return name ?? "HelloWord"; } } } ```