基于 2018-06-11, go-ipfs v0.4.15.

https://docs.ipfs.io/reference/api/http/

https://blog.csdn.net/weixin_43132569/article/details/82628570

参考的文章版本旧了. 在该基础上花了几天时间自己又加了一些.
官方文档注明所有 IPFS 命令都可以使用 HTTP API的方式去实现, 但实际上好像还是有不同.例如 ipfs bootstrap add 这个命令

下列所有 api 均可使用 getpost 请求 “节点” + “api” 的方式实现.

/api/v0/add

添加一个文件或目录到IPFS.

属性:

  • arg [file]: 待添加到 ipfs 的文件路径, 必需.
  • recursive [bool]: 是否递归把所有子目录的文件都添加. 默认为 false
  • quiet [bool]: 最少的打印返回数据.
  • quieter [bool]: 只返回最终的 hash
  • silent [bool]: 不返回任何数据
  • progress [bool]: 以数据流方式处理数据
  • trickle [bool]: 使用滴式DAG格式生成DAG
  • only-hash [bool]: 仅分块和哈希,不写入磁盘
  • wrap-with-directory [bool]: 用目录对象包裹文件
  • hidden [bool]: 包括隐藏的文件。只有递归添加时有效
  • chunker [string]: 指定分块算法, 两种格式: size-[bytes] 或者 rabin-[min]-[avg]-[max], 默认为: “size-262144”.
  • pin [bool]: 是否在添加的时候持久化 (不被垃圾回收所回收), 默认为: true
  • raw-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]: 添加时转化为指定格式. 默认: cbor
  • input-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), 是否创建父目录. 默认为 false
  • cid-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]: 需要列出的对象的 Cid
  • file-order [bool]: 是否根据备份文件的路径顺序对结果进行排序

/api/v0/filestore/verify

验证filestore中的对象

属性:

  • arg [string]: 需要列出的对象的 Cid
  • file-order [bool]: 是否根据备份文件的路径顺序对结果进行排序

/api/v0/get

下载IPFS对象

属性:

  • arg [string]: 要下载的对象路径. 必需
  • output [string]: 存储下载的对象的位置.
  • archive [bool]: 是否输出一个 TAR 压缩包.默认为 false
  • compress [bool]: 是否使用 GZIP 压缩法对输出进行压缩. 默认为 false
  • compression-level [int]: 压缩等级 (1-9). 默认: -1

/api/v0/id

展示节点 ID 的信息

属性:

  • arg [string]: 要查看的 Peer ID
  • format [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]: 发布前解析路径. 默认: true
  • lifetime [string]: 发布生效后的持续时间.格式例如 “300s”, “1.5h” or “2h45m”, 时间单位: “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. 默认为: 24h
  • ttl [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. 必需

输出指定对象指向的链接

属性:

  • arg [string]: 检索的对象键, 符合 base58 编码的 hash. 必需
  • headers [bool]: 打印表的头部信息 (Hash, Size, Name)

/api/v0/object/new

从 IPFS 模板创建一个新对象

属性:

  • arg [string]: 使用的模板.

为给定的对象添加一个链接

属性:

  • arg [string]: 要修改的节点hash 必需
  • arg [string]: 创建的链接名称 必需
  • arg [string]: 要添加链接的 IPFS 对象 必需
  • create [bool]: 创建中介节点

/api/v0/object/patch/append-data

将数据追加到 DAG 节点的数据段

属性:

  • arg [string]: 要修改的节点 hash 必需
  • arg [file]: 追加的数据 必需

从对象删除一个链接

属性:

  • 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”}默认是: json
  • datafieldenc [string]: 数据字段的编码类型. 二选一“text” or “base64”. 默认是 text
  • pin [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]: 流的 HandlerID
  • all [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]: 递归方式的持久化存储指定对象. 默认为 true
  • progress [bool]: 展示进度.

/api/v0/pin/ls

持久化对象列表到本地仓库

属性:

  • arg [string]: 要持久化的对象列表的路径
  • type [string]: 持久化对象列表的键的类型, 可以是“direct”, “indirect”, “recursive”, or “all”. 默认是 all
  • quiet [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]: 打印完整的持久化对象的 hash
  • quiet [bool]: 只打印损坏的持久化对象的 hash

/api/v0/ping

向IPFS主机发送请求包

属性:

  • arg [string]: 要 ping 的节点 id
  • count [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]: 指定打印的节点ID
  • proto [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]: 展示提交hash
  • repo [bool]: 展示 repo 版本
  • all [bool]: 展示所有版本信息