返回Web API中的错误:错误整数代码或错误字符串?

时间:2017-02-16 08:55:03

标签: javascript json api asp.net-web-api error-handling

我有一个关于在Web API中返回错误的问题。此Web API通常从javascript(网站)调用。 返回错误有两种可能性,一种是将它们作为字符串返回,另一种是将它们作为整数错误代码返回。

将错误作为错误代码返回的示例JSON:

{
    "status" : "Error",
    "error"  : 30
}

将错误作为错误字符串返回的示例JSON:

{
    "status" : "Error",
    "error"  : "ERR_INVALID_FILENAME"
}

您认为最好的方法是什么?我认为错误字符串选择更好,因为以下内容:

  • 错误字符串选择通过引入自我注释代码来提高代码可读性和可维护性。 因为,在错误代码方法中,javascript dev会写:

    if (result.error == 30) { do something related to files and invalidness...}

    在错误字符串方法中,javascript dev会写:

    if (result.error == "ERR_INVALID_FILENAME") { do something related to files and invalidness...}

  • 在宏观方案,浏览器呈现,HTML dom操作和AJAX HTTP请求处理中,这个小错误字符串检查是无关紧要的开销。虽然在C ++或C#应用程序中我们显然会使用枚举,但我们在两个独立的实体(例如web api和网站)中没有这样的选择,并且成本收益似乎是合理的。

感谢您的意见。

2 个答案:

答案 0 :(得分:0)

  1. 我对多个请求有相同的错误消息,也许你可以使用某种结构来实现错误枚举,字典,甚至列表(如果你需要多语言)。
  2. 您可以拥有从错误代码到消息(甚至是类型,级别)的某种翻译器。在许多情况下你需要更多信息:也许你会有一条消息和一条调试消息,也许你需要一些类型来说这是一个阻塞的消息,这只是一个警告。

    < / LI>
  3. 您可以将错误作为字符串发送到客户端,并且您的json大小将会增加(取决于按摩长度),或者您可以在js中预加载错误地图并将代码转换为消息,如果更小则显示消息(再取决于)但你的客户方将努力做到这一点。移动到js时请注意浏览器内存限制。

答案 1 :(得分:0)

要回答“字符串或整数错误代码”的问题,在代码透视图中字符串选项更可取,除了处理错误并在JS中显示正确的消息之外不计入成本或管理费用

作为改进,我建议您可以发送正确的HTTP状态代码,例如200 for success and 400 for bad request等,以便在整个应用程序中使用。

如果您希望客户端应用程序检测到来自API的特定错误,您可以在HttpResponseMessage()的“数据部分”中包含包含错误状态和代码的模型,这样您就不会必须经常检查错误代码。

相关问题