JSON RPC 2.0标准响应

问题描述:

我目前正在考虑在我的代码中实现一些JSON RPC 2.0响应。不过,我对什么是使用它的标准做法有点不清楚: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 error ,还是应该是更多的响应指示数据没有找到?换句话说,JSON RPC中的约定是否像Google Go一样使用错误作为正常的返回条件,还是更类似于“真正搞砸了”的恐慌?

  1. 根据规范(http://www.jsonrpc.org/specification#error_object),您必须使用可选属性data你对错误的附加信息,所以,你的情况的反应必须是:

{"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