【发布时间】:2012-12-19 23:29:50
【问题描述】:
我正在做一个项目,我的所有客户端操作都严重依赖 web api,无论是帐户详细信息更新、添加新详细信息、修改所有内容都已使用 ASP.NET Web Api 和 Backbone.js 完成
p>当前场景:
在当前的方案中,我从我的 web api 控制器返回一个布尔值,以指示操作是否成功。
例子:
[ActionName("UpdateAccountDetails")]
public bool PostAccountDetails(SomeModel model)
{
bool updateStatus = _customService.UpdateAccountDetails(model);
return updateStatus;
}
因此,在对此操作进行 ajax 调用后,我会检查响应的真/假并显示错误或成功消息。
问题:
现在发生的事情是我的操作开始出现异常,并且操作一直返回 false,并且显示了错误消息。但我找不到原因?
所以我想知道是否有每个人都遵循的标准 api 响应结构?
我最初提出这个想法是让每个 web api 操作都返回这个类
public class OperationStatus
{
public bool Result { get; set; } // true/false
public string Status { get; set; } // success/failure/warning
public List<string> WarningMessages { get; set; }
public List<string> ErrorMessages { get; set; }
public string OtherDetails { get; set; }
}
此更改将是一项重大更改,并且会耗费时间和资源,因此我认为最好对此有第二/第三/第四意见。
请对此提出一些想法。
更新:
有了来自Mark Jones 的一些little help,我想出了这个
[ActionName("UpdateAccountDetails")]
public HttpResponseMessage PostAccountDetails(SomeModel model)
{
bool updateStatus;
string errorMessage;
try{
updateStatus = _customService.UpdateAccountDetails(model);
if(updateStatus)
{
return Request.CreateResponse(HttpStatusCode.OK);
}
return Request.CreateResponse(HttpStatusCode.InternalServerError);
}
catch(Exception exception)
{
errorMessage = exception.Message;
return Request.CreateResponse(HttpStatusCode.InternalServerError, errorMessage);
}
return updateStatus;
}
对此有什么想法吗?
【问题讨论】:
-
这篇文章可能会给你一些关于使用 WebAPI 实现错误处理的想法:blogs.msdn.com/b/youssefm/archive/2012/06/28/…
-
您还应该看看下面凯文和菲利普的建议。实现异常过滤器是一个好主意,您应该考虑在发生错误时抛出 HttpResponseException,这样您就不必更改操作签名上的返回类型。
标签: asp.net-mvc asp.net-mvc-4 asp.net-web-api