如何实现一个类来确定是要接受还是要接受不好的请求

问题描述 投票:1回答:2

我正在寻找一种解决方案来改进我的代码。

我在所有控制器中都有此代码:

var data = await _accountService.Create(value);
if (data.HasError)
{
    return BadRequest(data);
}
return Ok(data);

我正在寻找一种解决方案,无需检查HasError是否存在。

在我的所有服务中,我返回以下课程:

public class ResponseEnvelope<T>
    {

        public T Result { get; set; }

        public IList<ErrorDto> Errors { get; set; }

        public IList<MessageDto> Messages { get; set; }

        public bool HasError
        {
            get
            {
                return Errors != null && Errors.Any();
            }
        }

        public bool HasMessage
        {
            get
            {
                return Messages != null && Messages.Any();
            }
        }

        public ResponseEnvelope<T> AddError(string code, string message = null, string description = null)
        {
            Errors.Add(new ErrorDto(code, message, description));
            return this;
        }
    }
c# .net asp.net-core
2个回答
0
投票

如果我做对了,您只是在Sercece上调用一个方法并返回其响应换行,然后将扩展方法添加到Controller

public IActionResult WrapResponse<T>(this Controller controller, ResponseEnvelope<T> envelope){
    return envelope.HasError ? controller.BadRequest(envelope) : controller.Ok(envelope);
}

并将其作为this.WrapResponse(data)调用


0
投票

。Net核心

您可以使用ActionFilterMiddleware提取此功能。

动作过滤器具有OnActionExecuted-可以在此处放置此逻辑。

我希望使用Middleware,您可以在调用next.Invoke()之后执行此操作

。Net Framework

如果使用的是.Net Framework,则有一些选项,例如IHttpHandler,IHttpModule和ActionFilter。您可以在IHttpHandler vs IHttpModule中了解有关模块和处理程序的信息。

© www.soinside.com 2019 - 2024. All rights reserved.