您好,登錄后才能下訂單哦!
這篇“ipfs-api訪問IPFS的方法是什么”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“ipfs-api訪問IPFS的方法是什么”文章吧。
星際文件系統(tǒng)Ipfs節(jié)點提供和REST API接口,可供我們在程序代碼中操作節(jié)點進行文件的上傳等操作。不過大多數(shù)情況下,我們并不需要直接操作這個REST開發(fā)接口,而是使用經(jīng)過封裝的更友好的ipfs-api,一個nodejs包。
到官網(wǎng)下載nodejs安裝包:32位,64位。下載后雙擊進行安裝即可。
開一個控制臺窗口,測試:
C:\Users\hubwiz> node -v V8.11.1
Ipfs-api的安裝需要git命令行,因此我們先安裝git。從官網(wǎng)下載git安裝包:32位,64位。下載后雙擊安裝即可。
執(zhí)行g(shù)it命令測試:
D:\test-ipfs-api> git version git version 2.16.2.windows.1
ipfs-api需要編譯原生node模塊,因此需要安裝VisualStudio 2015和python27。
官網(wǎng)下載VisualStudio 2015社區(qū)版,雙擊安裝即可。 官網(wǎng)下載Python27安裝包,雙擊安裝并設(shè)置PATH環(huán)境變量使python可用。
重新開一個控制臺,使環(huán)境變量生效。現(xiàn)在安裝ipfs-api:
D:\test-ipfs-api> npm install ipfs-api + ipfs-api@20.0.1 added 1 package, updated 1 package and moved 1 package in 22.138s
在D:\test-ipfs-api目錄下創(chuàng)建一個測試腳本test.js:
const ipfsAPI = require('ipfs-api') const ipfs = ipfsAPI('localhost', '5001', {protocol: 'http'}) const buffer = Buffer.from('this is a demo') ipfs.add(buffer) .then( rsp => console.log(rsp[0].hash)) .catch(err => console.error(err))
執(zhí)行這個腳本:
D:\test-ipfs-api> node test.js QmfQS4vm9YZTAyGZEkDqm81xripwsK3NgqfNkbCdoeEw5i
也就是說,我們將內(nèi)容this is a demo
添加到本地倉庫后,得到哈希值 QmfQS4vm9YZTAyGZEkDqm81xripwsK3NgqfNkbCdoeEw5i
。現(xiàn)在可以使用cat子命令來查看這個哈希值對應(yīng)的內(nèi)容:
D:\test-ipfs-api> ipfs cat QmfQS4vm9YZTAyGZEkDqm81xripwsK3NgqfNkbCdoeEw5i
控制臺會輸出我們之前上傳的內(nèi)容:
this is a demo
ipfs進入監(jiān)聽狀態(tài)后,提供了一個http網(wǎng)關(guān),讓我們可以使用瀏覽器來訪問ipfs上的內(nèi)容。網(wǎng)關(guān)默認在本機(127.0.0.1)的8080端口監(jiān)聽,因此使用你的瀏覽器訪問這個URL:
http://127.0.0.1:8080/ipfs/QmfQS4vm9YZTAyGZEkDqm81xripwsK3NgqfNkbCdoeEw5i
同樣可以看到我們之前上傳的內(nèi)容。 注意:需要首先啟動監(jiān)聽器(ipfs daemon)并且你的瀏覽器和ipfs節(jié)點在同一臺計算機。 ?
ipfs-api也支持在browser使用。最簡單的方法是使用專門針對瀏覽器的封裝庫,在html中引用即可:
<script src="https://unpkg.com/ipfs-api/dist/index.js"></script>
這個特別封裝的庫會創(chuàng)建一個全局對象ipfsAPI,我們在瀏覽器腳本中可以直接使用,例如:
var ipfs = window.IpfsApi('localhost', '5001')
這種方法比較簡單,因此下文不再描述。接下來我們將使用更加工程化的方法, 采用webpack來直接在前端腳本中使用ipfs-api的nodejs包。
在D:\test-ipfs-api目錄下創(chuàng)建index.html:
<!doctype html> <html> <head> <meta charset="utf-8"> </head> <body> <textarea id="content">THIS IS ANOTHER DEMO</textarea> <button id="upload">Upload</button> <script src="./bundle.js"></script> </body> </html>
我們的目標是,當點擊按鈕時,我們將文本框的內(nèi)容上傳到ipfs
在D:\test-ipfs-api目錄下編寫腳本app.js:
import ipfsAPI from 'ipfs-api' const ipfs = ipfsAPI('localhost', '5001', {protocol: 'http'}) window.addEventListener('load', function() { let btn = document.querySelector('#upload') let txt = document.querySelector('#content') btn.addEventListener('click',()=>{ let buffer = Buffer.from(txt.value, 'utf-8'); ipfs.add(buffer) .then( rsp => console.log(rsp[0].hash)) .catch(err => console.error(err)) }) })
在D:\test-ipfs-api目錄下編寫配置文件webpack.config.js:
const webpack = require('webpack'); const path = require('path'); const CopyWebpackPlugin = require('copy-webpack-plugin'); module.exports = { entry: './app.js', output: { path: path.resolve(__dirname), filename: 'bundle.js' }, module: { loaders: [ { test: /\.js$/, exclude: /(node_modules|bower_components)/, loader: 'babel-loader', query: { presets: ['es2015'], plugins: ['transform-runtime'] } } ] } }
執(zhí)行webpack打包:
D:\test-ipfs-api> webpack
由于需要從網(wǎng)頁中訪問ipfs節(jié)點,這就引入了跨域安全問題,因此我們需要配置ipfs節(jié)點使其允許跨域請求:
D:\>ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
由于ipfs節(jié)點默認在本機(127.0.0.1)的5001端口監(jiān)聽API請求,因此如果你的瀏覽器和ipfs節(jié)點不在同一臺機器上,需要讓ipfs節(jié)點監(jiān)聽公開地址:
D:\> ipfs config --json Addresses.API '"/ip4/0.0.0.0/tcp/5001"'
當然,如果你的瀏覽器和ipfs節(jié)點在同一臺機器上,就不需要進行這個配置了。
由于ipfs節(jié)點旳http網(wǎng)關(guān)默認在本機(127.0.0.1)的8080端口監(jiān)聽http請求,因此如果你的瀏覽器和ipfs節(jié)點不在同一臺機器上,就需要讓ipfs網(wǎng)關(guān)監(jiān)聽公開地址:
D:\> ipfs config --json Addresses.Gateway '"/ip4/0.0.0.0/tcp/8080"'
首先啟動ipfs監(jiān)聽:
D:\>ipfs daemon
然后在測試目錄下啟動web服務(wù)器,這里使用python內(nèi)置的簡單服務(wù)器,當然你可以使用任何熟悉的web服務(wù)器:
D:\test-ipfs-api> python –m SimpleHTTPServer Serving HTTP on 0.0.0.0 port 8000 ...
現(xiàn)在打開你的瀏覽器,訪問http://127.0.0.1:8000/,一切順利的話,你可以看到一個文本框和一個按鈕,點擊按鈕,即可將文本框的內(nèi)容上傳到ipfs節(jié)點。
以上就是關(guān)于“ipfs-api訪問IPFS的方法是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。