IPFS RPC API:ipfs 路由 findprovs 提供不可读的响应

问题描述 投票:0回答:1

我的计算机上全新安装了 IPFS 守护进程:

ipfs init
ipfs daemon

运行以下命令时,输出似乎正确:

$ ipfs 路由 findprovs QmUZzfuaCcPSXgADUnkF1GKBsDRUxxxxxxxxx
12D3KooWLJBTtGHSbeqHSEkAo4jTni1PBrtRktV2a85yKxxxxxx

按如下方式请求 RPC API 时(应提供与 CLI 相同的输入):

curl -X POST "http://127.0.0.1:5001/api/v0/routing/findprovs?arg=QmUZzfuaCcPSXgADUnkF1GKBsDRUxxxxxxxxx"

我得到的响应包含多个 JSON 对象(100+),用

{"Extra":"","ID":"12D3KooWAH9RHKrbpS1nZC7Wos91y8dD4HwN5Wq2JmHjxxxxxxx","Responses":null,"Type":7}
{"Extra":"","ID":"12D3KooWHWEKWG6Mh4ZgoCmxhP2uhyyVdBJGt388LMLXQQxxxxxx","Responses":null,"Type":0}
....

如何使用 RPC API 获得与 CLI 相同的结果?

rpc ipfs
1个回答
0
投票

经过进一步调查和确认后,我找到了一个临时解决方案(这确实不理想)这个github帖子

返回的带有

Type=4
的提供商是 CLI 识别的提供商。这是一个 ruby 示例,用于从响应中提取这些内容(将响应视为纯文本而不是 Json 后):

response.body.each_line
             .map{ |line| JSON.parse(line)}
             .filter{ |line| line['Type'] == 4}
             .collect{ |line| line['Responses']}
             .map{ |line| line[0]}
             .map{ |line| line['ID'] }

# ["QmQzqxhK82kAmKvARFZSkUVS6fo9sySaiogAnx5Enxxxx",
# "12D3KooWFzZYEChh6Dsy4jHyTopK42oRrk41WVfnpMG5rxxxxxx",
© www.soinside.com 2019 - 2024. All rights reserved.