IPFS。 DAG从网络浏览器获取内容

时间:2020-01-03 00:49:40

标签: javascript ipfs

我通过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 / localhost: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))

我不知道链接的形成方式。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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