【问题标题】:Handling expected errors and create response for Web API处理预期错误并为 Web API 创建响应
【发布时间】:2017-10-25 08:24:38
【问题描述】:

我正在使用 .net WEB API 构建一个 REST API。

对于预期错误的最佳/推荐响应是什么?

情况:有飞机有地方。这个地方可以由另一个人预订。如果预订因预期错误而失败,我需要创建什么响应? 现在,我用这个:

[Route("{number}/reservation"), HttpPost]
public IHttpActionResult Reservation(string number)
{           
  if (string.IsNullOrEmpty(number))
    return Content(HttpStatusCode.BadRequest, "Number required");

  var result = Reservation(number);
  if (result.IsValid)
  {
     return Request.CreateResponse(HttpStatusCode.OK);
  }
  else
     return Request.CreateResponse(HttpStatusCode.OK,result.ErrorMessage);
}

【问题讨论】:

标签: c# rest validation asp.net-web-api response


【解决方案1】:

您从 API 生成错误响应的方式看起来不错,但最佳做法是在您的应用程序中使用 ExceptionFilters,这有助于您全局处理(已处理和未处理)异常。

您可以像这样在您的应用程序中简单地创建一个ExceptionFilter -

public class MyExceptionFilterAttribute : ExceptionFilterAttribute 
    {
        public override void OnException(HttpActionExecutedContext context)
        {
            if (context.Exception is NotImplementedException)
            {
                context.Response = new HttpResponseMessage(HttpStatusCode.NotImplemented);
            }
            // Other checks can be added
        }
    }

然后在

的 API 中注册您的过滤器

WebApiConfig.cs

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

通过这个,任何时候从您的 API 过滤器中抛出未处理的Exception 都会使用过滤器的OnException 方法生成响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2021-05-25
    • 2021-11-18
    • 2018-01-29
    • 1970-01-01
    • 2017-07-07
    相关资源
    最近更新 更多