ApiControllerBase
Controller
类与构造方法
Controller类需要继承于ApiControllerBase抽象类,该类为Controller下提供一系列返回方法和处理。
对应Controller的构造方法里可以接收所需要业务领域的Service和Logger,具体写法如下
public class IpVisitPrePayController : ApiControllerBase
{
private readonly IpVisitPrePayService _ipVisitPrePayService;
private readonly ILogger _logger;
public IpVisitPrePayController(IpVisitPrePayService ipVisitPrePayService, ILogger<IpVisitPrePayController> logger)
{
this._ipVisitPrePayService = ipVisitPrePayService;
_logger = logger;
}
// 控制器代码...
}
API方法
对应API应当标识请求方法类型和具体路由路径,如[HttpPost]和[Route("GetIpVisitPrePay")],也可以合到一起写作[HttpPost("GetIpVisitPrePay")]。如下面的方法。
目前开放的请求方法类型只有HttpGet和HttpPost
[HttpGet("GetIpVisitPrePay")]
public async Task<ApiResponse> GetIpVisitPrePay(long seq)
{
var data = await _ipVisitPrePayService.GetIpVisitPrePay(seq);
if (data != null)
{
return SuccessResult(data);
}
else
{
return FaliedResult("未查询到相关信息");
}
}
请求
除了简单参数以外,多个参数的情况都使用Request请求类,即后缀携带Reuqest,该类存放在该业务领域对应的Dto项目下的Requests文件夹下
public async Task<ApiResponse> GetUsers(GetUsersRequest request)
在HttpPost的情况下,不带任何标记的参数默认是从Body传入的,如果需要获取Query上的参数,则需要标记为[FromQuery],如果同时需要Body和Query里的参数,可以写成这样。
public async Task<ApiResponse> GetUsers(GetUsersRequest request, [FromQuery] UsersFilterRequest filter)
在返回结果时,ApiControllerBase类为当前控制器提供了一系列的简单响应方法。
| 方法名 | 备注 |
|---|---|
| SuccessResult | 成功结果 |
| SuccessListResult | 成功列表结果 |
| FailedResult | 失败结果 |
| CallResult | 直接调用服务结果 |