Files
2023-12-23 21:14:56 +08:00

1.5 KiB
Raw Permalink Blame History

简介

控制器层通常不包含业务的,我们控制器的代码经常是如下:

[HttpGet]
[route("Info")]
pulic IActionResult GetInfo()
{
	retrun Ok(_service.GetInfo());
}

我们不仅要创建控制器文件,还要写出应用层到控制器的方法,将业务的数据通过控制器暴露出去

控制器只做转发,没有做任何事情,形成了大量的冗余代码

如何使用

推荐直接在应用层中直接使用

使用动态Api需要3个条件

  1. 任何一个类,实现IRemoteService接口
  2. 该类需要加入DI容器
  3. 在管道模型中配置动态Api服务:

通常我们直接继承ApplicationService即可,因为该类实现了IRemoteService

            //动态Api
            Configure<AbpAspNetCoreMvcOptions>(options =>
            {
                options.ConventionalControllers.Create(typeof(YiAbpApplicationModule).Assembly, options => options.RemoteServiceName = "default");
            });

根据方法名自动映射Http方法及路由 例如:

  • GetInfoGet请求
  • UpdateInfoPut请求
  • RemoveInfo: Del请求
  • CreateInfo: Post请求

完整例子

using Volo.Abp.Application.Services;

namespace Yi.Abp.Application.Services
{
    public class TestService : ApplicationService
    {
        /// <summary>
        /// 你好世界
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public string GetHelloWorld(string? name)
        {
            return name ?? "HelloWord";
        }
    }
}