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";
}
}
}
```
|