基于 2018-06-11, go-ipfs v0.4.15 版本
参考 https://blog.csdn.net/weixin_43132569/article/details/82628570
参考的文章版本旧了. 在该基础上花了几天时间自己又加了一些.
官方文档注明所有 IPFS 命令都可以使用 HTTP API的方式去实现, 但实际上好像还是有不同.例如 ipfs bootstrap add
这个命令
下列所有 api 均可使用 get
或 post
请求 “节点” + “api” 的方式实现.
/api/v0/add
添加一个文件或目录到IPFS.
属性:
arg
[file]: 待添加到 ipfs 的文件路径, 必需.recursive
[bool]: 是否递归把所有子目录的文件都添加. 默认为 falsequiet
[bool]: 最少的打印返回数据.quieter
[bool]: 只返回最终的 hashsilent
[bool]: 不返回任何数据progress
[bool]: 以数据流方式处理数据trickle
[bool]: 使用滴式DAG格式生成DAGonly-hash
[bool]: 仅分块和哈希,不写入磁盘wrap-with-directory
[bool]: 用目录对象包裹文件hidden
[bool]: 包括隐藏的文件。只有递归添加时有效chunker
[string]: 指定分块算法, 两种格式: size-[bytes] 或者 rabin-[min]-[avg]-[max], 默认为: “size-262144”.pin
[bool]: 是否在添加的时候持久化 (不被垃圾回收所回收), 默认为: trueraw-leaves
[bool]: 使用原始块作为叶节点(试验中)nocopy
[bool]: 通过文件仓库添加文件。(试验中)fscache
[bool]: 在文件仓库中检查与现存在的区块。(试验中)cid-version
[int]: CID 版本, 默认值为0, 除非有另外指定.hash
[string]: 指定 hash 计算的方式 (试验中), 默认值: “sha2-256”, 如果要改变的话必须改动 cid版本
请求体
参数 path
是一种文件类型。这个路径需要在请求主体(body)中有包含一个 ‘multipart/form-data’ 文件。
/api/v0/bitswap/ledger
显示当前节点的账本信息。
属性:
arg
[string]: 监测账本的节点ID。
/api/v0/bitswap/reprovide
触发 reprovider
属性:
此接口不需要传入参数。
/api/v0/bitswap/stat
展示bitswap代理的诊断信息。
属性:
此接口不需要传入参数。
/api/v0/bitswap/unwant
从wantlist中移除给定区块。
属性:
arg
[string]: 待移除的块的 hash 值。必需
/api/v0/bitswap/wantlist
显示wantlist中的当前块列表。
属性:
peer
[string]: 需要展示 wantlist 的peer id
。
/api/v0/block/get
获取原始IPFS块
属性:
arg
[string]: 区块的 hash 值。
/api/v0/block/put
将输入存储为IPFS块
属性:
arg
[file]: 需要被存储为 IPFS 块的数据。必需format
[string]: 创建块时的 cid 格式。mhtype
[string]: multihash 的生成方式. 默认: “sha2-256”。mhlen
[int]: multihash 的长度。默认: “-1”。
请求体
参数 path
是一种文件类型。这个路径需要在请求主体(body)中有包含一个 ‘multipart/form-data’ 文件。
/api/v0/block/rm
移除IPFS块。
属性:
arg
[string]: 区块的 multihash。必需force
[bool]: 是否忽略不存在的区块。默认:否。quiet
[bool]: 是否最小输出。默认: 否。
/api/v0/block/stat
打印原始块的信息.
属性:
arg
[string]: 区块的 multihash。必需
/api/v0/bootstrap/add/default
添加默认节点
属性:
此接口不需要传入参数。
/api/v0/bootstrap/list
展示系统目前连接的所有节点.
属性:
此接口不需要传入参数。
/api/v0/bootstrap/rm/all
删除所有节点.
属性:
此接口不需要传入参数。
/api/v0/cat
显示 IPFS 中的对象数据。
属性:
arg
[string]: 文件在 ipfs 网络中的位置, 例如 /ipfs/QmYm6dfcbQ2pSdqUmfiqr2ESthoGnwF4Mv9Ry1zLNp7SqV。必需offset
[int]: 指定偏移量. 从文件的指定位置开始读取.length
[int]: 最大读取字节数.
/api/v0/commands
展示所有可用的命令
属性:
flags
[bool]: 是否展示命令的标记
/api/v0/config/edit
在$EDITOR中打开配置文件进行编辑。
属性:
此接口不需要传入参数。
/api/v0/config/profile/apply
执行用户配置文件
属性:
arg
[string]: 需要执行的用户配置 必需
/api/v0/config/replace
替换配置文件.
属性:
arg
[file]: 用于替换的配置文件. 必需
/api/v0/config/show
输出当前配置的内容.
属性:
此接口不需要传入参数。
/api/v0/dag/get
在 IPFS 网络中获取一个 DAG 节点
属性:
arg
[string]: 要获取的节点. 必需
/api/v0/dag/put
添加一个 DAG 节点到 IPFS
属性:
arg
[file]: 要放入的节点对象 必需format
[string]: 添加时转化为指定格式. 默认: cborinput-enc
[string]: 声明传输的配置文件为指定格式数据. 默认为 json.pin
[bool]: 是否在添加的时候持久化存储在本地.hash
[string]: 指定 hash 算法
/api/v0/dag/resolve
解析ipId块
属性:
arg
[string]: 要解析的路径. 必需
/api/v0/dht/findpeer
查询和节点ID相关联的多地址的所有DHT信息
属性:
arg
[string]: 需要查询的节点ID 必需verbose
[bool]: 是否输出其他信息
/api/v0/dht/findprovs
在 DHT 网络中找到有指定关键字的节点
属性:
arg
[string]: 用于搜索的关键字.必需verbose
[bool]: 是否输出其他信息num-providers
[int]: 一次找出的数量. 默认: 20个
/api/v0/dht/get
给定一个键,在DHT表中查询最佳值
属性:
arg
[string]: 用于搜索的键. 必需verbose
[bool]: 是否输出其他信息
/api/v0/dht/provide
向网络宣布正在提供给定的值
属性:
arg
[string]: 提供记录的键 必需verbose
[bool]: 是否输出其他信息recursive
[bool]: : 是否递归添加目录路径
/api/v0/dht/put
往 DHT 中写入一个键值对
属性:
arg
[string]: 存储特定值的键 必需arg
[string]: 存储的值 必需verbose
[bool]: 是否输出其他信息
/api/v0/dht/query
查找指定节点的最近的节点.
属性:
arg
[string]: peerID 必需verbose
[bool]: 是否输出其他信息
/api/v0/diag/cmds/clear
从日志中清除失效请求
属性:
此接口不需要传入参数。
/api/v0/diag/cmds/set-time
设置在log中的失效请求保存多久
属性:
arg
[string]: 必需
/api/v0/diag/sys
打印系统诊断信息
属性:
此接口不需要传入参数。
/api/v0/dns
解析DNS链接
属性:
arg
[string]: 需要解析的域名 必需recursive
[bool]: 是否递进解析,终止条件为解析结果不是 DNS 链接
/api/v0/file/ls
列出Unix文件系统对象的目录内容
属性:
arg
[string]: IPFS 对象的路径. 必需
/api/v0/files/chcid
给定 path 改变根节点的 cid 版本 或者 hash 方式
属性:
arg
[string]: path 默认是: /cid-version
[int]: cid 版本 (试验中)hash
[string]: hash 方式 (试验中)
/api/v0/files/cp
复制文件到mfs
属性:
arg
[string]: 要拷贝的源对象 必需arg
[string]: 复制的目的地 必需
/api/v0/files/flush
将给定路径的数据刷新到磁盘
属性:
arg
[string]: path 默认是: /
/api/v0/files/ls
列出本地可变命名空间中的目录
属性:
arg
[string]: 展示哪个路径的文件列表. 默认: /l
[bool]: 使用长列表展示.
/api/v0/files/mkdir
创建目录
属性:
arg
[string]: 要创建的目录 必需parents
[bool]: 当输入的路径不存在父目录时(例如/t/test
中的/t
), 是否创建父目录. 默认为 falsecid-version
[int]: cid 版本 (试验中)hash
[string]: hash 方式 (试验中)
/api/v0/files/mv
移动 files
属性:
arg
[string]: 要移动的源文件 必需arg
[string]: 要移动到的位置 必需
(测试过的 bug
是移动到子目录中时会把源文件名改为子目录名)
/api/v0/files/read
读取给定mfs中的文件
属性:
arg
[string]: 要读取文件的路径 必需offset
[int]: 从第几个字节开始读取count
[int]: 读取字节数量的最大限制
/api/v0/files/rm
删除文件
属性:
arg
[string]: 文件或者目录的路径 必需recursive
[bool]: 是否递归
如果要删除的是目录, 需要设置递归参数为 true
/api/v0/files/stat
用于展示文件/目录的状态.
属性:
arg
[string]: 绝对路径, 必需 (根目录为/.
, 例如:/./test
)format
[string]: 给定返回数据的格式, 让返回的数据以给定的格式展示. 会与其他格式化选项冲突. 默认格式: Size: CumulativeSize: ChildBlocks: Type:hash
[bool]: 只打印 hash , 会与其他格式化选项冲突size
[bool]: 只打印 size , 会与其他格式化选项冲突with-local
[bool]: 计算本地的有向无环图数量, 以及可能的大小.
示例: http://localhost:5001/api/v0/files/stat?arg=/.
/api/v0/files/write
写入给定文件系统中的可变文件
属性:
arg
[string]: 写入位置arg
[file]: 源文件offset
[int]: 从哪个字节开始的偏移量create
[bool]: 如果不存在则创建truncate
[bool]: true = 覆盖内容 false = 追加内容count
[int]: 读取的最大字节限制raw-leaves
[bool]: 使用原始块作为叶节点(试验中)cid-version
[int]: cid 版本 (试验中)hash
[string]: hash 方式 (试验中)
/api/v0/filestore/dups
列出filestore和标准块存储中的块
属性:
此接口不需要传入参数
/api/v0/filestore/ls
列出filestore中的对象列表
属性:
arg
[string]: 需要列出的对象的 Cidfile-order
[bool]: 是否根据备份文件的路径顺序对结果进行排序
/api/v0/filestore/verify
验证filestore中的对象
属性:
arg
[string]: 需要列出的对象的 Cidfile-order
[bool]: 是否根据备份文件的路径顺序对结果进行排序
/api/v0/get
下载IPFS对象
属性:
arg
[string]: 要下载的对象路径. 必需output
[string]: 存储下载的对象的位置.archive
[bool]: 是否输出一个 TAR 压缩包.默认为 falsecompress
[bool]: 是否使用 GZIP 压缩法对输出进行压缩. 默认为 falsecompression-level
[int]: 压缩等级 (1-9). 默认: -1
/api/v0/id
展示节点 ID 的信息
属性:
arg
[string]: 要查看的 Peer IDformat
[string]: 指定输出格式
/api/v0/key/gen
生成一对新的键值对
属性:
arg
[string]: 键名称 必需type
[string]: 键类型 [rsa, ed25519] 必需size
[int]: 指定键的长度 必需
/api/v0/key/list
列出本地的键值对
属性:
l
[bool]: 展示键的其他信息
/api/v0/key/rename
重命名键值对
属性:
arg
[string]: 要重命名的键值对 必需arg
[string]: 新的name 必需force
[bool]: 是否允许覆盖存在的键
/api/v0/key/rm
删除键值对
属性:
arg
[string]: 要删除的键值对 必需l
[bool]: 展示键的其他信息
/api/v0/log/level
改变日志等级
属性:
arg
[string]: 定义子系统的日志标识符.all
是所有的子系统标识 必需arg
[string]: 日志级别 [debug, info, warning, error, critical] debug 最冗长, critical 最简洁 必需
/api/v0/log/ls
列出所有日志系统标识
属性:
不需要参数
/api/v0/log/tail
读取事件日志
属性:
不需要参数
/api/v0/ls
列出Unix系统对象下的目录内容
属性:
arg
[string]: IPFS 列表路径 必需headers
[bool]: 是否打印表的头部 (Hash, Size, Name)resolve-type
[bool]: 是否解析链接的对象来检测其数据类型. 默认: true
/api/v0/mount
将IPFS挂载到文件系统(只读)
属性:
ipfs-path
[string]: IPFS 挂载路径ipfs-path
[string]: IPNS 挂载路径
/api/v0/name/publish
发布 IPNS 名称
属性:
arg
[string]: 要发布的 IPFS 对象路径 必需resolve
[bool]: 发布前解析路径. 默认: truelifetime
[string]: 发布生效后的持续时间.格式例如 “300s”, “1.5h” or “2h45m”, 时间单位: “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. 默认为: 24httl
[string]: 缓存这个定义的生效时间. (试验中)key
[string]: “ipfs key list -l” 指令列出的使用键或者一个有效的 PeerID 的名称, 默认是: self
/api/v0/name/pubsub/cancel
取消一个订阅名称
属性:
arg
[string]: 要取消的订阅名称
/api/v0/name/pubsub/state
查询IPNS的订阅状态
属性:
不需要参数
/api/v0/name/pubsub/subs
显示当前的订阅名称
属性:
不需要参数
/api/v0/name/resolve
解析 IPNS 的名称
属性:
arg
[string]: 要解析的 IPNS 名称, 默认为本地节点ID.recursive
[bool]: 递归直到返回的不是一个 IPNS 名称.nocache
[bool]: 不使用缓存条目.dht-record-count
[uint]: DHT 列表中请求记录的数量dht-timeout
[string]: DHT列表中存储的超时时间.例如"30s", 0 代表没有超时时间.
/api/v0/object/data
输出IPFS对象的原始字节
属性:
arg
[string]: 检索的对象键, 符合 base58 编码的 hash. 必需
/api/v0/object/diff
展示两个IPFS对象的差异
属性:
arg
[string]: 被比较的对象arg
[string]: 待比较的对象verbose
[bool]: 打印额外的信息
/api/v0/object/get
获取并序列化DAG节点
属性:
arg
[string]: 检索的对象键, 符合 base58 编码的 hash. 必需
/api/v0/object/links
输出指定对象指向的链接
属性:
arg
[string]: 检索的对象键, 符合 base58 编码的 hash. 必需headers
[bool]: 打印表的头部信息 (Hash, Size, Name)
/api/v0/object/new
从 IPFS 模板创建一个新对象
属性:
arg
[string]: 使用的模板.
/api/v0/object/patch/add-link
为给定的对象添加一个链接
属性:
arg
[string]: 要修改的节点hash 必需arg
[string]: 创建的链接名称 必需arg
[string]: 要添加链接的 IPFS 对象 必需create
[bool]: 创建中介节点
/api/v0/object/patch/append-data
将数据追加到 DAG 节点的数据段
属性:
arg
[string]: 要修改的节点 hash 必需arg
[file]: 追加的数据 必需
/api/v0/object/patch/rm-link
从对象删除一个链接
属性:
arg
[string]: 要修改的节点 hash 必需arg
[string]: 要删除的链接名称 必需
/api/v0/object/patch/set-data
设置IPFS对象的数据字段
属性:
arg
[string]: 要修改的节点 hash 必需arg
[file]: 设置对象的数据 必需
/api/v0/object/put
将输入存储为DAG对象,打印其键
属性:
arg
[file]: 保存为 DAG 对象的数据. 必需inputenc
[string]: 数据的编码.二选一{“protobuf”, “json”}默认是: jsondatafieldenc
[string]: 数据字段的编码类型. 二选一“text” or “base64”. 默认是 textpin
[bool]: 添加时持久化存储.quiet
[bool]: 最小化输出.
/api/v0/object/stat
获取DAG节点的信息
属性:
arg
[string]: 节点 hash 必需
/api/v0/p2p/listener/close
关闭活跃的 P2P 监听
属性:
arg
[string]: P2P 监听协议all
[bool]: 关闭全部监听
/api/v0/p2p/listener/ls
活跃的 P2P 监听列表
属性:
headers
[bool]: 打印表的头信息(HandlerID, Protocol, Local, Remote)
/api/v0/p2p/listener/open
将p2p连接转发到网络多地址
属性:
arg
[string]: 协议标识符 必需arg
[string]: 请求操作的应用地址 必需
/api/v0/p2p/stream/close
关闭活跃的 P2P 流
属性:
arg
[string]: 流的 HandlerIDall
[bool]: 关闭所有流
/api/v0/p2p/stream/dial
调用 p2p 监听
属性:
arg
[string]: 要链接的远程节点 必需arg
[string]: 协议标识符 必需arg
[string]: 连接的监听地址. 默认: /ip4/127.0.0.1/tcp/0
/api/v0/p2p/stream/ls
活跃的 P2P 流列表
属性:
headers
[bool]: 打印表的头信息 (HagndlerID, Protocol, Local, Remote).
/api/v0/pin/add
持久化对象到本地仓库
属性:
arg
[string]: 要持久化的对象 必需recursive
[bool]: 递归方式的持久化存储指定对象. 默认为 trueprogress
[bool]: 展示进度.
/api/v0/pin/ls
持久化对象列表到本地仓库
属性:
arg
[string]: 要持久化的对象列表的路径type
[string]: 持久化对象列表的键的类型, 可以是“direct”, “indirect”, “recursive”, or “all”. 默认是 allquiet
[bool]: 只打印对象的 hash
/api/v0/pin/rm
从本地仓库删除持久化对象
属性:
arg
[string]: 对象路径 必需recursive
[bool]: 是否递归删除. 默认为 true
/api/v0/pin/update
递归更新一个持久化对象
属性:
arg
[string]: 旧的对象路径 必需arg
[string]: 新对象的路径 必需unpin
[bool]: 更新完毕后是否删除旧对象. 默认为 true
/api/v0/pin/verify
验证一个递归的持久化对象是否是完整的
属性:
verbose
[bool]: 打印完整的持久化对象的 hashquiet
[bool]: 只打印损坏的持久化对象的 hash
/api/v0/ping
向IPFS主机发送请求包
属性:
arg
[string]: 要 ping 的节点 idcount
[int]: 发送消息的次数. 默认是 10 次
/api/v0/pubsub/ls
按名称列出订阅的主题列表
属性:
不需要参数
/api/v0/pubsub/peers
列出我们现在正在连接的节点
属性:
arg
[string]: 链接的节点列表的主题
/api/v0/pubsub/pub
发布一个消息到给定的订阅主题
属性:
arg
[string]: 给定的主题 必需arg
[string]: 要发布的消息 必需
/api/v0/pubsub/sub
向指定主题订阅资讯
属性:
arg
[string]: 订阅主题的名称 必需discover
[bool]:尝试查找订阅相同主题的节点.
/api/v0/refs/local
列出所有本地的引用
属性:
不需要参数
/api/v0/repo/fsck
删除repo的锁死文件
属性:
不需要参数
/api/v0/repo/gc
执行垃圾回收机制
属性:
stream-errors
[bool]: 是否打印流错误quiet
[bool]: 最小化输出
/api/v0/repo/stat
获取当前repo的状态信息
属性:
human
[bool]: 输出 RepoSize
/api/v0/repo/verify
验证在repo中的所有块没有错误
属性:
不需要参数
/api/v0/repo/version
展示repo的版本
属性:
quiet
[bool]: 最少化输出
/api/v0/resolve
将名称的值解析到IPFS
属性:
arg
[string]: 要解析的名字recursive
[bool]: 递归直到返回值不是一个 IPFS 的名称dht-record-count
[uint]: 请求记录列表的数量dht-timeout
[string]: 超时时间. 例如 30s, 0 代表没有超时时间
/api/v0/shutdown
关闭 IPFS 后台进程
属性:
不需要参数
/api/v0/stats/bitswap
展示 bitswap 代理的诊断信息
属性:
不需要参数
/api/v0/stats/bw
打印 IPFS 的带宽信息
属性:
peer
[string]: 指定打印的节点IDproto
[string]: 指定打印的协议poll
[bool]: 间隔时间打印interval
[string]: 如果间隔时间打印为 true, 设置间隔时间. 格式例如: “300s”, “1.5h” or “2h45m”. 单位: “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. 默认值为 1s
/api/v0/stats/repo
获取当前repo的状态
属性:
human
[bool]: 输出 RepoSize
/api/v0/swarm/addrs/listen
监听地址接口列表
属性:
不需要参数
/api/v0/swarm/addrs/local
本地地址列表
属性:
id
[bool]: 在地址中展示节点ID
/api/v0/swarm/connect
打开一个给定地址的链接
属性:
arg
[string]: 要打开的节点地址 必需
/api/v0/swarm/disconnect
关闭一个给定地址的链接
属性:
arg
[string]: 要关闭的节点地址 必需
/api/v0/swarm/filters/add
添加一个地址过滤器
属性:
arg
[string]: 过滤器的 Multiaddr (地址). 必需
/api/v0/swarm/filters/rm
删除一个地址过滤器
属性:
arg
[string]: 要删除的地址过滤器 必需
/api/v0/swarm/peers
列出活跃的节点列表
属性:
verbose
[bool]: 显示所有额外的信息streams
[bool]: 同时列出每个节点上关于数据流的信息latency
[bool]: 同时列出每个节点上延迟时间的信息
/api/v0/tar/add
往 ipfs 里导入一个 tar 文件
属性:
arg
[file]: tar 文件 必需
/api/v0/tar/cat
从 IPFS 导出一个 tar 文件
属性:
arg
[string]: tar 文件位置. 必需
/api/v0/update
更新 IPFS
属性:
arg
[string]: 子命令参数
/api/v0/version
展示 IPFS 版本信息
属性:
number
[bool]: 只展示版本号码commit
[bool]: 展示提交hashrepo
[bool]: 展示 repo 版本all
[bool]: 展示所有版本信息