ASP.NET Web API - 如何处理两个或多个Web API之间的异常传播?

时间:2015-01-05 22:59:35

标签: c# json asp.net-web-api

我正在使用两个或更多ASP.NET Web API。其中一个向另一个发送请求并获得要处理的响应。这是一系列响应请求呼叫 有一个建议的答案建议创建一个ExceptionFilterAttribute来处理Web API中的异常,并发送一个响应,其中包含有关错误的一些属性数据:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Filters.Add(new HandleApiExceptionAttribute());
        // ...
    }
}

public class HandleApiExceptionAttribute : ExceptionFilterAttribute
{
    public override void OnException(HttpActionExecutedContext context)
    {
        var request = context.ActionContext.Request;

        var response = new
        {
             //Properties go here...
        };

        context.Response = request.CreateResponse(HttpStatusCode.BadRequest, response);
    }
}

在这种情况下,客户端获取响应并处理异常。

在我将有两个或更多Web API在它们之间进行通信的环境中,如果出现业务规则异常(例如无效参数,无效数据,未找到结果),我将回复带有错误的json响应信息。 在两个或多个Web API之间处理此错误传播的最佳方法是什么?

  1. 我的第一种方法是拥有一组异常(自定义异常类),因此JSON响应将被解析为此类,并将在最终客户端中切换以向用户显示友好消息。在这种情况下,JSON响应将仅在所有Web API之间传播。所有Web API和最终客户端将共享一个公共异常库,以识别异常类型。

  2. 仅在Web API和最终客户端之间发送和传播“字符串”消息,并将这些字符串与这些字符串相匹配,以便为最终用户显示友好消息。这似乎会导致每个web api中出现重复的异常代码,并且不是一个干净的解决方案。

  3. 在Web API之间共享业务规则JSON异常的另一个干净和最佳实践,以避免重复性和字符串消息依赖性?

0 个答案:

没有答案