Mac*_*akM 5 c# asp.net-web-api
从这个来源:http : //www.tutorialsteacher.com/webapi/action-method-return-type-in-web-api我得到了,Web API 中的 Action 可以返回:
我知道每个选项的作用,但我很好奇是否有一些最佳实践,例如总是使用 IHttpActionResult 作为返回类型,因为它是所有其他选项的超集。
我用的asp.net core不过原理是一样的。另外,并不是说这是最好的方法,但对我来说这是非常有效的设置。
我总是使用IActionResult它对我来说最灵活。然后,我可以让操作方法完全不知道DTO我的服务(操作方法调用)返回的信息。我所做的或多或少都是这样的:
[CustomExceptionsFilter]
[CustomValidateModelFilter]
[Authorize(Roles="whatever")]
public IActionResult ActionMethod(params){
return Ok(this._myService.whatever());
}
Run Code Online (Sandbox Code Playgroud)
这样,如果您更改DTO服务返回(这种情况经常发生,尤其是在早期开发阶段),我根本不需要触摸我的控制器。
另外,我有非常统一的返回方式,其中我的自定义异常错误过滤器捕获所有服务层自定义异常,例如验证异常、操作异常等......
[更新]
在过滤器中,您实际上并没有传统意义上的返回。您宁愿设置您的context.result(类型为IActionResult)。所以,假设我的服务抛出了我的自定义MyServiceOperationException("You cannot do that")异常。
我在异常过滤器中所做的是:
public override void OnException(ExceptionContext context)
{
if (context.Exception is MyServiceOperationException)
{
context.Result = new BadRequestObjectResult(new MyErrorResult(){
Message = context.Exception.Message,
Code=context.Exception.MyErrorCode }
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4288 次 |
| 最近记录: |