Architecture 处理错误消息

Architecture 处理错误消息,architecture,widget,Architecture,Widget,最近,我不得不在一个主要由小部件组成的富web应用程序中规范客户端和服务器之间的通信。对客户端的响应是json格式的。当决定如何处理错误消息时,出现了两个想法 发送错误消息的一部分 例如 {“success”:“false”,“errors”:[“field1”:“message1”,“field2”:“message2”]} 将错误作为标头发送,并将false返回给客户端 response.addHeader('X-Application-Error','[“field1”:“message1

最近,我不得不在一个主要由小部件组成的富web应用程序中规范客户端和服务器之间的通信。对客户端的响应是json格式的。当决定如何处理错误消息时,出现了两个想法

  • 发送错误消息的一部分 例如

    {“success”:“false”,“errors”:[“field1”:“message1”,“field2”:“message2”]}

  • 将错误作为标头发送,并将false返回给客户端

  • response.addHeader('X-Application-Error','[“field1”:“message1”,“field2”:“message2”]'))

    第二种选择似乎很简洁;用户只在需要时检查头中的错误,错误似乎是协议的一部分,而不是响应的一部分


    这是一种好的做法吗?一种方式比另一种方式好。

    我将发送错误消息作为响应的一部分


    如果您想在HTTP协议级别报告事情,那么添加自定义头就是您要做的事情;HTTP已经建立了报告错误的方法(通过HTTP状态代码)。我会在响应的正文中留下将要显示给客户端(或由Javascript使用)的任何内容。

    +1我同意。此外,如果您要将错误消息返回给客户端,它们应该使用客户端语言,并且不要透露有关您系统的敏感信息(如DB连接字符串)-仅仅因为您希望调用代码是您的并不意味着它总是属于您的。Ooops-“客户端语言”显然适用于显示给最终用户的消息;但是,这种想法也适用于在不同层/系统之间交换任何错误信息。