JSON RPC 2.0标准响应

时间:2016-01-20 23:28:43

标签: error-handling standards json-rpc web-standards

我目前正在考虑在我的代码中实现一些JSON RPC 2.0响应。但是,我对使用它的标准做法有点不清楚:

1)当用户发送带有无效参数的请求时,我应该只返回逐字默认错误消息

 {"jsonrpc": "2.0", "error": {"code": -32602, "message": "  Invalid params"}, "id": "1"}

或者消息可以更具体,例如:

 {"jsonrpc": "2.0", "error": {"code": -32602, "message": "  Invalid params: invalid username"}, "id": "1"}

或者这些自定义消息是否有自己的错误代码?

2)如果用户说,请求来自数据库的数据并且响应是“数据不存在”,因为我们没有遇到任何错误但仍然没有返回任何内容,应该将其作为JSON RPC返回{{ 1}},还是应该更多的回复表明没有找到数据?换句话说,JSON RPC中的约定是将错误用作Google Go中的正常返回条件,还是更类似于“真正搞砸了”恐慌?

1 个答案:

答案 0 :(得分:2)

  1. 根据规范(http://www.jsonrpc.org/specification#error_object),您必须使用可选属性data来获取有关错误的其他信息,因此,在您的情况下,响应必须是:
  2. {"jsonrpc": "2.0", "error": {"code": -32602, "message": " Invalid params", "data":"invalid username"}, "id": "1"}

    您可以在-32000-32099的范围内创建自己的个人错误代码,但我只会在必要时执行此操作,即除非您的客户端应用程序在这种情况下应该运行(“无效”用户名“)与任何其他-32602案例不同。

    1. 这取决于你。这是一个比JSON-RCP更广泛的设计问题。您可以在这篇文章中找到一些意见:when-to-throw-an-exception