Javascript 在Web API中返回错误:错误整数代码还是错误字符串?

Javascript 在Web API中返回错误:错误整数代码还是错误字符串?,javascript,json,api,asp.net-web-api,error-handling,Javascript,Json,Api,Asp.net Web Api,Error Handling,我有一个关于在web API中返回错误的问题。此web API通常从javascript(网站)调用。 返回错误有两种可能,一种是以字符串形式返回错误,另一种是以整数错误代码形式返回错误 返回错误作为错误代码的示例: { "status" : "Error", "error" : 30 } 将错误作为错误字符串返回的示例: { "status" : "Error", "error" : "ERR_INVALID_FILENAME" } 你认为什么是最好的方

我有一个关于在web API中返回错误的问题。此web API通常从javascript(网站)调用。 返回错误有两种可能,一种是以字符串形式返回错误,另一种是以整数错误代码形式返回错误

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

{
    "status" : "Error",
    "error"  : 30
}
将错误作为错误字符串返回的示例:

{
    "status" : "Error",
    "error"  : "ERR_INVALID_FILENAME"
}
你认为什么是最好的方法?我认为错误字符串选择更好,因为:

  • 错误字符串选项通过引入自注释代码来提高代码的可读性和可维护性。 因为,在错误代码方法中,javascript开发人员会编写:

    if(result.error==30){执行与文件和无效性相关的操作…}

    在错误字符串方法中,javascript开发人员将编写:

    if(result.error==“ERR\u INVALID\u FILENAME”){执行与文件和无效性相关的操作…}

  • 在浏览器呈现、HTMLDOM操作和AJAX HTTP请求处理的总体方案中,这个小错误字符串检查的开销微不足道。而在C++或C语言应用中,我们显然会使用枚举,我们在两个独立的实体中没有这样的选择,例如Web API和网站,并且成本回报似乎是合理的。

谢谢你的意见

  • 如果您对多个请求有相同的错误消息,那么您可以对错误枚举、字典甚至列表使用某种结构(如果您需要多语言)
  • 您可以从错误代码到消息(甚至类型、级别)使用某种转换器。在很多情况下,您需要的不仅仅是一条消息:可能您需要一条freindly消息和一条debug消息,可能您需要某种类型的消息来表示这是一条阻塞消息,而这只是一条警告

  • 您可以将错误作为字符串发送到客户端,您的json大小将增加(取决于消息长度),或者您可以在js中预加载错误映射并将代码转换为消息,您的消息将变小(再次取决于),但您的客户端将努力做到这一点。移动到js时,请注意浏览器内存限制


  • 为了回答您关于“字符串或整数错误代码”的问题,字符串选项更可取,并且在代码透视图中足够好,除此之外,在JS中处理错误和显示正确的消息不能被视为成本或开销

    作为一项改进,我建议您可以发送适当的HTTP状态代码,如
    200表示成功,400表示错误请求等,以便在整个应用程序中使用


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

    我同意你所说的,但这个问题可能更适合软件工程界。@Itay你找到解决方案了吗?@JoseFrancis只有两个观点,我希望这个问题有更多的答案。最近几天我考虑的另一个额外输入是,在API中,错误(即使在JSONified时被字符串化)应该驻留在枚举中,并且应该是强类型的(以便可以在编译时检查)。