【问题标题】:JSON RPC 2.0 standard responsesJSON RPC 2.0 标准响应
【发布时间】:2016-01-20 23:28:43
【问题描述】:

我目前正在研究在我的代码中实现一些 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 返回吗@987654323 @,还是应该更多地表示未找到数据的响应?换句话说,JSON RPC 中的约定是像 Google Go 中那样使用错误作为正常返回条件,还是更类似于“真正搞砸了”的恐慌?

【问题讨论】:

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


    【解决方案1】:
    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

    【讨论】:

    • 是否可以返回HTTP状态码而不是jsonrpc码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    相关资源
    最近更新 更多