IPFS.DAG 从 Web 浏览器获取内容



我通过HTTP客户端向IPFS发送请求:

var cleanScript = {
'type': 'script'
};
var formData = new FormData(); 
var jsonse = JSON.stringify(cleanScript);
var blob = new Blob([jsonse], {type: "application/json"});
formData.append('file', blob, 'file.json')

fetch('https://ipfs.infura.io:5001/api/v0/add', {
	method: 'POST',
	body: formData
})
.then(r => r.json())
.then(data => console.log(data))

我可以通过浏览器访问这些东西,例如:

https://ipfs.infura.io/ipfs/QmZp5tQwLkMxpYHHK4a1989xYCjfUG81Po7LoaUwmxpDqP https://gateway.ipfs.io/ipfs/QmZp5tQwLkMxpYHHK4a1989xYCjfUG81Po7LoaUwmxpDqP

链接由以下原则形成:

  • 协议- http/https
  • - ipfs.infura.io/gateway.ipfs.io/本地主机:5555
  • 路径- IPFS/IPNS
  • 哈希- 来自响应的哈希

{protocol}://{domain}/{path}/{hash}

但是,如果我使用 DAG:

var cleanScript = {
"a": 1,
"b": [1, 2, 3],
"c": {
"ca": [5, 6, 7],
"cb": "foo"
}
};
var formData = new FormData();
var jsonse = JSON.stringify(cleanScript);
var blob = new Blob([jsonse], {
type: "application/json"
});
formData.append('file', blob, 'somefile.json')
fetch('https://ipfs.infura.io:5001/api/v0/dag/put', {
method: 'POST',
body: formData
})
.then(r => r.json())
.then(data => console.log(data))

我不明白链接是如何形成的。

我可以通过浏览器访问内容吗?

go-ipfs v0.4.22 提供的 HTTP 网关仅支持返回文件和目录。这些是 unixfsv1 格式的 DAG(用dag-pbmulticodec 标识(。你可以看到dag-pb是你在 cid.ipfs.io 的第一个CID的一部分。

默认情况下,通过/api/v0/dag/put创建的自定义 DAG 将添加为dag-cbor,并且无法通过 HTTP 网关读取它们,因为它们不再是文件或目录。

您应该能够通过 HTTP API 端点在/api/v0/get上读取它们。例如:

https://ipfs.io/api/v0/dag/get?arg=bafyreiah7uhzdxbuik6sexirej22iyi5nau3d4nnfhv6ux33ogtdpeznpm

最新更新