caivega / ipfslib

Other
2 stars 1 forks source link

[enhancement] - jt_blockNumber返回结果改为json格式 #184

Open foreso-GitHub opened 3 years ago

foreso-GitHub commented 3 years ago

建议将jt_blockNumber返回结果改为json格式。

目前的格式如下:

{
    "jsonrpc": "2.0",
    "method": "jt_blockNumber",
    "params": [
        {
            "type": "number"
        },
        {
            "type": "info"
        }
    ],
    "id": 1
}

{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [
        {
            "result": 205383
        },
        {
            "result": [
                205383,
                0
            ]
        }
    ]
}

建议改成如下,更清晰一些:

{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [
        {
            "result": {
                "number": 205383
            }
        },
        {
            "result": {
                "number": 205383,
                "txCount": 0
            }
        }
    ]
}
caivega commented 3 years ago

建议可以跟jt_version一样,可以加一个format参数

foreso-GitHub commented 3 years ago

我更倾向于全部改成json的返回。除了jt_version和jt_blockNumber,还有jt_sendTransaction和jt_signTransaction都会返回text格式的结果,全改成json格式,统一起来。

  1. 对于jt_blockNumber,还有jt_sendTransaction和jt_signTransaction,有了json格式就不再需要text格式了,再增加一个format参数其实意义不大。因为json格式的可读性更好,比如jt_blockNumber返回info结果,json格式下有txCount这个name就很清晰地表明了返回值的意义。另外两个格式的size其实相差不大,改成JSON格式对效率的影响很小。
  2. jt_version比较特殊,text和json的两种格式其实都是用户可能需要的,可以继续用format参数来区分两种不同的结果。也可以合并成一个JSON,如下:
    
    {
    "jsonrpc": "2.0",
    "method": "jt_version",
    "params": [],
    "id": 1
    }

{ "id": 1, "jsonrpc": "2.0", "result": [ { "result": { "checksum": "db1bf99761871c1bbe1b67e2bd6286eba58177fc", "time": "20210207", "version": "v0.5.4-dev", "text":"v0.5.4-dev-20210207-db1bf99761871c1bbe1b67e2bd6286eba58177fc" } } ] }

caivega commented 3 years ago

实际上我们现在全都是json结构的,只是"string", ["a", "b"] array这种,并不是非常适合用来描述多属性返回,不如object的标准, 只所以还保留这种默认非object的result结果返回,主要是显示简洁,用起来方便,这几个rpc平常,不管是测试人员,还是开发人员,除了程序对接(这种object的这种json就非常有优势,毕竟格式统一,数据规范),还有一部分需求,就是使用一般的工具查看当前rpc的返回情况,这个时候非object的简洁就更适合这种情况

caivega commented 3 years ago

实际上,现在所有的rpc, 除了jt_version及jt_blockNumber(默认string或者array类的json返回,使用format="json"参数,返回object类的json), 这种返回的信息很简单很单一的rpc, 其他的rpc全都是object类的json返回了

caivega commented 3 years ago

另外,计划后续有需要有时间,现在是/v2版本的rpc, 准备只给程序对接用,可以把/v1 或得 /v0, 用来给一般查询用,大家看看这个建议如何,如果这个建议可以的话,我可以把现在的 /v2的rpc 里边有些代码移到/v0或者/v1去

foreso-GitHub commented 3 years ago

另外,计划后续有需要有时间,现在是/v2版本的rpc, 准备只给程序对接用,可以把/v1 或得 /v0, 用来给一般查询用,大家看看这个建议如何,如果这个建议可以的话,我可以把现在的 /v2的rpc 里边有些代码移到/v0或者/v1去

这个建议不错。但/v2,/v1,/v0的作用该如何区分,可能需要思考讨论一下。

caivega commented 3 years ago

当时设计rpc的url的时候,v2就是version 2的意思,不过当时是计划用来区分不同开发阶段(时间维度)的版本划分,现在看来,除了时间维度分不同的版本,实际上从功能角度也可以划分,反正我们现在已经到v2了(后续会有v3, v4),v1与v0, 一直空着,可以留着用来功能上划分,留一个出来给一般用户或者测试人员使用,或者运维人员使用

foreso-GitHub commented 3 years ago

当时设计rpc的url的时候,v2就是version 2的意思,不过当时是计划用来区分不同开发阶段(时间维度)的版本划分,现在看来,除了时间维度分不同的版本,实际上从功能角度也可以划分,反正我们现在已经到v2了(后续会有v3, v4),v1与v0, 一直空着,可以留着用来功能上划分,留一个出来给一般用户或者测试人员使用,或者运维人员使用

好,我们节后电话会议讨论下。节前不要改了。

caivega commented 3 years ago

年前不折腾了,大家新年快东:)

foreso-GitHub commented 3 years ago

20210225,经过讨论,改为低优先级。