Blame view

泰额版/Food Labeling Management Code/Yi.Doc.Md/02.框架功能模块教程/02.动态Api.md 1.53 KB
59e51671   “wangming”   1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
  ## 简介
  控制器层通常不包含业务的,我们控制器的代码经常是如下:
  ``` cs
  [HttpGet]
  [route("Info")]
  pulic IActionResult GetInfo()
  {
  	retrun Ok(_service.GetInfo());
  }
  ```
  我们不仅要创建控制器文件,还要写出应用层到控制器的方法,将业务的数据通过控制器暴露出去
  > 控制器只做转发,没有做任何事情,形成了大量的冗余代码
  
  ## 如何使用
  > 推荐直接在应用层中直接使用
  
  使用动态Api,需要3个条件
  1. 任何一个类,实现`IRemoteService`接口
  2. 该类需要加入DI容器
  3. 在管道模型中,配置动态Api服务:
  
  > 通常我们直接继承`ApplicationService`即可,因为该类实现了`IRemoteService`
  ``` cs
              //动态Api
              Configure<AbpAspNetCoreMvcOptions>(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
      {
          /// <summary>
          /// 你好世界
          /// </summary>
          /// <param name="name"></param>
          /// <returns></returns>
          public string GetHelloWorld(string? name)
          {
              return name ?? "HelloWord";
          }
      }
  }
  
  ```