【问题标题】:JSON RPC 2.0: response that is part error and part resultJSON RPC 2.0:部分错误和部分结果的响应
【发布时间】:2017-05-26 21:10:18
【问题描述】:

只有部分失败时返回 JSON RPC 响应的标准方法是什么?看来both 'result' and 'error' cannot both be set

我们有一个案例,服务器正在跨多个运行相同 API 的站点汇总结果。聚合的原因是由于Same-Origin Policy。每个站点都可以响应结果或错误。如果一些响应一个结果而另一些响应一个错误,那么聚合服务器将什么作为完整响应返回给原始调用者?

a =(method)=> b
              b =(method)=> c
              b =(method)=> d
              b <=(error)== c
              b <=(result)= d
a <=(??????)= b

最好只返回两个响应(一个包含任何错误且没有“id”,一个包含结果且“id”表明这是最后一个响应)?

【问题讨论】:

    标签: json-rpc


    【解决方案1】:

    服务器的职责是聚合并返回可能包含错误的结果。这是您的客户所期望的。

    --> {"jsonrpc": "2.0", "method": "getResults", "id": 1}
    
    <-- {"jsonrpc": "2.0", "result": [ "success", "error" ], "id": 1}
    

    如果服务器本身由于任何意外原因无法处理请求,您应该返回错误。

    【讨论】:

    • 这似乎回答了最初的问题,但我不得不说无论如何还有一些不足之处。如果服务器“C”的响应速度明显快于服务器“D”怎么办?客户端“A”真的应该等待额外的时间来获得完整的结果吗?
    • @GregSmethells 是的。 JSON-RPC 对一个请求有一个响应。有一些关于progress notification的讨论,但还没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 2019-05-18
    • 1970-01-01
    相关资源
    最近更新 更多