因此,作为一名开发人员,我有一个非常基本的问题,在 REST标准中,出于特定原因,我们有 100个错误代码,如:
还有更多。
现在谈到实施时,我们直接返回404 作为响应状态代码 ,并在响应正文中显示错误消息。有了这种方法,我认为有点令人困惑,如果URI本身永远不会被生成,这意味着假设/ a / b未实现并且正在他们回复404的任何服务器,以及作为客户他们检查代码并说如果他们正在使用此API搜索用户,则找不到用户。
而我的感觉(如果我错了,请纠正我)是如果在服务器中成功完成调用(没有任何异常和错误),我们返回200并在响应正文中返回特定格式,如:
{
"status" : boolean, // if the overall call succeeded
"message" : string, // message from server
"code" : integer, // code, http code or business level code
"data" : object,//actual data
"type" : string, // type of the data like object, basic, array, (basically a value from enum)
}
任何来电的响应代码始终为200,特定代码在响应格式的代码键中可用。
现在从客户端角度使用这些REST调用,无论是浏览器,IOS,Android还是桌面应用,我们都会调用API并检查200 < / strong>作为响应代码,我们所有进一步的功能将取决于状态&amp;响应正文本身的代码键。再次如果响应代码本身不是200 那么它实际上是关于服务器的问题。
来到API的SDK实现,我们可以在其内部执行相同的操作,如果响应代码是,则始终检查状态和代码 200,并直接拒绝非200响应代码。
我觉得这种方法在客户端以及SDK方面的实现将更加通用和直接。
如果我错了,请纠正我?请提出一些看法。
提前致谢。
答案 0 :(得分:3)
没有“REST标准”。
但是,有一个HTTP standard,而original definition of REST强调了客户端和服务器之间uniform interface的概念。
通过根据HTTP标准使用错误代码,可以使您的界面与其他HTTP接口更加统一。这使得在处理API时可以重用更多现有的HTTP客户端代码。
例如:
请注意,没有任何内容可以阻止您在响应有效内容中发送自定义错误代码,例如 标准HTTP状态代码。 (事实上,这是一种常见的做法,它在RFC 7807中已经标准化了。)
现在,您完全有可能不需要统一的界面。正如评论所指出的那样,也许你正在构建内部的东西。