概要
IPFSノードを立ち上げデータをアップロードする方法の紹介です。
IPFSは分散型ストレージでNFTの画像や音楽データを主に保存しています。
将来は主流のデータ保存ストレージになる大変注目度の高い技術です。
目次
IPFSノードにデータ(ファイルや画像など)を保存
/api/v0/add
IPFSにファイルやディレクトリを追加する。
引数
パラメータ | 説明 | 必須 |
---|---|---|
quiet [bool]: | 最小限の出力を書き込む。 | × |
quieter [bool] | 最終ハッシュのみを出力する。 | × |
silent [bool] | 何も出力しない。 | × |
progress [bool] | 進捗データを流す | × |
trickle [bool] | ダグ生成にトリクルダグ形式を使用する | × |
only-hash [bool] | チャンクとハッシュのみ - ディスクに書き込まない | × |
wrap-with-directory [bool] | ファイルをディレクトリオブジェクトでラップする | × |
chunker [string] | チャンキングアルゴリズム、size-[bytes]、ravin-[min]-[avg]-[max]、またはbuzhash。デフォルト:size-262144 | × |
raw-leaves [bool] | リーフノードにrawブロックを使う。 | × |
nocopy [bool] | ファイルストアを使ってファイルを追加する。raw-leavesを暗示する。(実験的) | × |
fscache [bool] | ファイルストアに既存のブロックがないかチェックする。(実験的) | × |
cid-version [int] | CIDバージョン。CIDv1に依存するオプションが渡されない限り、デフォルトは0である。バージョン1を渡すと、raw-leavesオプションのデフォルトがtrueになる | × |
hash [string] | 使用するハッシュ関数。sha2-256でない場合はCIDv1を意味する。(実験的)。デフォルト: sha2-256 | × |
inline [bool] | 小さなブロックを CID にインライン化する。(実験的) | × |
inline-limit [int] | インライン化する最大ブロックサイズ。(実験的)。デフォルト: 32。 | × |
pin [bool] | 追加されたファイルをガベージコレクションから保護するためにローカルにピンを立てる。デフォルト: true | × |
to-files [string] | 指定したパスに Files API (MFS) への参照を追加します | × |
Request Body
引数のパスはファイル・タイプです。このエンドポイントは、'multipart/form-data'としてリクエストのボディに1つまたは複数のファイル(コマンドに依存)を期待します。
addコマンドはファイルを追加するだけでなく、ディレクトリや複雑な階層をアップロードすることもできます。
これは次のように行われる: マルチパートリクエストの各部分は、IPFSに追加するディレクトリまたはファイルです。
ディレクトリパートは特別なコンテントタイプapplication/x-directoryを持つ。これらのパートはデータを持たない。パートヘッダーは以下のようになる:
Content-Disposition: form-data; name="file"; filename="folderName"
Content-Type: application/x-directory
ファイル・パートは、以下のヘッダーの後にファイル・ペイロードを運ぶ:
Abspath: /absolute/path/to/file.txt
Content-Disposition: form-data; name="file"; filename="folderName%2Ffile.txt"
Content-Type: application/octet-stream
...contents...
上記のファイルは "folderName/file.txt "階層にパスを含むので、IPFSはそれを "folderName "の中に追加することができる。ディレクトリを宣言する部分は、中にファイルがある場合は任意であり、ファイル名から推測される。どのような場合でも、ディレクトリツリーの深さ優先探索は、 リクエストを生成する異なるパーツを順番に並べるために推奨される。
Abspathヘッダーはnocopyオプションで有効になっているfilestore/urlstore機能のために含まれ、ファイルシステム内のファイルの場所(IPFSルート内)、または完全なWeb URLに設定することができます。
Response
成功すると、このエンドポイントへの呼び出しは、200と次のボディで返されます:
{
"Bytes": "<int64>",
"Hash": "<string>",
"Name": "<string>",
"Size": "<string>"
}
cURL Example
curl -X POST -F file=@myfile "http://127.0.0.1:5001/api/v0/add?quiet=<value>&quieter=<value>&silent=<value>&progress=<value>&trickle=<value>&only-hash=<value>&wrap-with-directory=<value>&chunker=size-262144&raw-leaves=<value>&nocopy=<value>&fscache=<value>&cid-version=<value>&hash=sha2-256&inline=<value>&inline-limit=32&pin=true&to-files=<value>"
データを公開
/api/v0/name/publish
IPNS名を公開する。
引数
パラメータ | 説明 | 必須 |
---|---|---|
arg [string] | 公開するオブジェクトのipfsパス | ○ |
key [string] | ipfs key list -l'でリストされる、使用するキーの名前または有効なPeerID。デフォルト: self | × |
resolve [bool] | パブリッシュする前に、与えられたパスが解決できるかどうかをチェックする。デフォルト: true | × |
lifetime [string] | 署名付きレコードの有効期間。300s"、"1.5h"、または "7d2h45m "のような期間を受け入れる。デフォルト:48h0m0s | × |
ttl [string] | 更新をチェックする前にこのレコードをキャッシュする時間を示す。デフォルト:1h0m0s | × |
quieter [bool] | CIDv1としてエンコードされた最終IPNS名のみを書き込む(/ipnsコンテンツパスで使用するため)。 | × |
v1compat [bool] | V1 と V2 署名の両方のフィールドを含む下位互換 IPNS レコードを生成する。デフォルト:true | × |
allow-offline [bool] | offlineの場合、IPNSレコードをネットワークにブロードキャストせずに(失敗する代わりに)ローカルのデータストアに保存する | × |
ipns-base [string] | キーに使用するエンコード: マルチベースでエンコードされたCIDか、base58btcでエンコードされたマルチハッシュのどちらかである。b58mh|base36|k|base32|b…}を取る。デフォルト: base36。必須ではない。 | × |
Response
成功すると、このエンドポイントへの呼び出しは、200と次のボディで返されます
{
"Name": "<string>",
"Value": "<string>"
}
cURL Example
curl -X POST "http://127.0.0.1:5001/api/v0/name/publish?arg=<ipfs-path>&key=self&resolve=true&lifetime=48h0m0s&ttl=1h0m0s&quieter=<value>&v1compat=true&allow-offline=<value>&ipns-base=base36"
データの反映確認
/api/v0/name/resolve
IPNS名を解決する。
引数
パラメータ | 説明 | 必須 |
---|---|---|
arg [文字列] | 解決するIPNS名。デフォルトはノードのpeerID | × |
recursive [bool] | 結果がIPNS名でなくなるまで解決する。デフォルト:true | × |
nocache [bool] | キャッシュされたエントリーを使用しない | × |
dht-record-count [uint] | DHT 解決のために要求するレコード数。デフォルト: 16 | × |
dht-timeout [string] | DHT 解決中に値を収集する最大時間。タイムアウトなしの場合は0を渡します。デフォルト:1m0s | × |
stream [bool] | 見つかったエントリーをストリームする | × |
Response
成功すると、このエンドポイントへの呼び出しは、200と次のボディで返されます:
{
"Path": "<string>"
}
cURL Example
curl -X POST "http://127.0.0.1:5001/api/v0/name/resolve?arg=<name>&recursive=true&nocache=<value>&dht-record-count=16&dht-timeout=1m0s&stream=<value>"