如何通过REST接口访问fabric1.1网络

Mon Jul 23, 2018

1400 Words|Read in about 3 Min
Tags: fabric   blockchain   REST接口  

概述

​ 通过REST接口来访问区块链网络,可以屏蔽底层区块链网络的复杂性,减低开发Dapp的难度,快速开发基于区块链的应用。

​ Fabric官方已经开始提供访问Fabric网络的REST接口,但该接口目前还不是太完善,官方文档明确说明会在后续版本release这些功能。可以参考这里的官方说明。

​ 根据官方文档可以看出,到目前为止,release的版本中只提供了node和java的SDK,那么我们可以通过这些SDK来封装区块链基础服务。在Fabric的源码中,我们也可以找到相应的例子,本文是基于fabric-sample中已经封装好的REST接口来说明如何通过REST接口来访问Fabric网络。

环境准备

安装fabric区块链网络

可以参考我写的这篇文章,或者个人博客先搭建好一个基本的区块链网络,并保证能够正常运行。

注意:node的版本,不能使用最新的版本,我这里使用的node是v8.11.3,配套的npm版本是:5.6.0,当换成10+以上版本时,就会报错。

安装依赖包

进入fabric-sample的balance-transfer目录,可以看到该目录下有以下文件:

文件名 说明
runApp.sh 启动区块链rest服务的脚本,该脚本会启动app.js
app.js 通过node代码实现fabric的REST接口,node的实现类是app
testAPIs.sh 测试node的REST接口的脚本,其实就是通过curl发送http请求,来测试REST接口

进入目录后安装node的依赖包,

cd fabric-samples/balance-transfer
npm install

在安装依赖包时会遇到各种问题,解决办法可以查看后面的问题解决章节。也可以直接通过命令:

npm install --unsafe-perm

启动REST服务

在app.js中已经给我封装好了一些REST接口,我们只需要把它启动起来就可以了:

./runApp.sh

若显示以下信息,就表示我们的服务启动正确了:

Creating network "artifacts_default" with the default driver
Creating ca_peerOrg2         ... done
Creating orderer.example.com ... done
Creating ca_peerOrg1         ... done
Creating peer0.org2.example.com ... done
Creating peer1.org2.example.com ... done
Creating peer1.org1.example.com ... done
Creating peer0.org1.example.com ... done

============== node modules installed already =============
[2018-07-23 18:44:36.082] [INFO] SampleWebApp - ****************** SERVER STARTED ************************
[2018-07-23 18:44:36.083] [INFO] SampleWebApp - ***************  http://localhost:4000  ******************

通过REST接口来访问Fabric网络

这里我们可以手动运行一个官方的测试脚本把REST接口全面测试以下,都测试通过后,就可以对各个请求的实现进行进一步研究了。要测试REST服务接口是否可用,很简单,只需要运行testAPIs.sh这个脚本就可以了。

另外开启一个终端:

cd fabric-samples/balance-transfer
./testAPIs.sh

运行过程中可以看一些输出,若没有报错,会继续打印一些信息,若输出以下信息,说明全部测试通过:

... ...

GET query Channels

{"channels":[{"channel_id":"mychannel"}]}

Total execution time : 68 secs ...

接下来:

  • 打开脚本testAPIs.sh,查看如何通过REST接口来访问Fabric网络。
  • 打开app.js,查看每个接口是如何实现的

遇到的问题和解决办法

安装依赖包

错误1

在fabric-samples/balance-transfer目录中,运行npm install,得到以下的信息:

> dtrace-provider@0.8.7 install /root/opensrc/fabric-samples/balance-transfer/node_modules/dtrace-provider
> node-gyp rebuild || node suppress-error.js

解决办法

sudo npm install dtrace-provider --unsafe-perm
错误2

不断打印以下错误信息

gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/opensrc/fabric-samples/balance-transfer/node_modules/grpc/.node-gyp/10.6.0"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/root/opensrc/fabric-samples/balance-transfer/node_modules/grpc/.node-gyp"

从上面的错误看出,是安装grpc时出了问题,解决的方法有很多,可以参考以下的办法。

  1. stackoverflow

或者可以按以下方式解决:

sudo npm install gprc --unsafe-perm

总结

本文介绍了如何通过REST接口来访问Fabric网络,主要是基于官方提供的fabric-sample中的例子进行说明的。在跑通本文描述的最简单的场景后,就可以在此基础上进一步学习如何使用node的sdk来访问Fabric网络,学习REST接口的具体实现。

另外,要注意node的版本,若是按照正规流程还是出现这样那样的错误,可以替换包的版本试试。

See Also

Mon Jul 23, 2018

1400 Words|Read in about 3 Min
Tags: fabric   blockchain   REST接口