2017-02-16 83 views
0

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

返回错误的错误代码的例子JSON:

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

一个例子JSON返回错误作为错误字符串:

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

你认为什么是最好的方法?我在想,错误字符串选择比较好,因为以下几点:

  • 错误字符串选择改进代码的可读性和可维护性,通过诱导自注释代码。 由于,而在错误代码的方法时,JavaScript开发这样写:

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

    在错误字符串的方法

    ,JavaScript的开发会写:

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

  • 在盛大浏览器渲染,HTML DOM操作和AJAX HTTP请求处理,这个小小的错误字符串检查是微不足道的开销。虽然在C++或C#应用程序中,我们显然会使用枚举,但我们在两个独立的实体(如web api和网站)中没有这样的选择,并且成本收益似乎是合理的。

感谢您的输入。

+0

我同意你的意见,但这个问题可能更适合软件工程社区。 – jorgonor

+0

@Itay你有没有达到任何解决方案? –

+0

@JoseFrancis只有两个意见,我希望这个问题有更多的答案。 我最近几天想到的另一个额外的输入是在API中,错误(即使它们在JSON化时被串化)应该驻留在枚举中,并且应该强类型化(以便可以检查它在编译时)。 –

回答

0
  1. 我你有多个请求相同的错误消息也许你可以使用某种structutre错误枚举,字典,甚至列表(如果你需要multilanguge)。
  2. 你可以有某种从错误代码到消息(甚至是类型,级别)的翻译器。在很多情况下,当你需要更多的消息时:也许你会有一个freindly消息和一个调试消息,也许你需要一些类型来说这是一个阻塞味精,这只是一个警告。

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

0

要回答你的“字符串或整数错误代码”,串的选择是最好和足够好代码视角,除此之外处理错误,并显示在JS正确的信息不能被考虑的问题作为成本或开销

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

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