EOS小白学习(四)使用http请求EOS节点 EOS小白学习(三)创建一个EOS的账户

欢迎来到EOS小白学习系列,本系列会记录EOS学习过程中的一些操作和细节,大饼果子非C++出身,如有错误,欢迎指出

接上一篇:

EOS小白学习(三)创建一个EOS的账户

前一篇用cleos完成了创建账户以及转账的一系列操作,也就是说,使用命令行就可以完成对节点的操作,那么http的api有什么用处呢?

本果子的意图是通过http了解eos的结构,并且对于真实业务,例如钱包的开发,是有需求要对接节点提供的http api的

eos的官方文档参见:EOS HTTP API

那么我们进入到docker里面

$ docker exec -it nodeos sh

# ls

bin   config.ini  dev  home  lib64  mnt  proc  run   srv  tmp     usr

boot  contracts   etc  lib   media  opt  root  sbin  sys  tutorials  var

就可以看到config.ini文件,查看以下该文件

# cat config.ini

就会看到最后几行的插件声明里有

# Plugin(s) to enable, may be specified multiple times

# plugin =

plugin = eosio::chain_api_plugin

plugin = eosio::history_api_plugin

这里注册了chain和history的插件,当然,你还可以注册很多其他插件,eos的源码包中就有这么多的插件

那么如我们的docker,已经有了chain和history api的插件,就可以进行http的调用了

我们来试一下在浏览器输入http://127.0.0.1:8888/v1/chain/get_info

诶?奇怪?怎么不行嘞?

并不是所有小伙伴都不行,大饼果子使用1.1.0的版本就不可以,于是翻看了一下eos的代码,找到了这样两句

  第一句

("http-validate-host", boost::program_options::value<bool>()->default_value(true), "If set to false, then any incoming \"Host\" header is considered valid")

  第二句

void http_plugin::plugin_initialize(const variables_map& options) {
   try {
      my->validate_host = options.at("http-validate-host").as<bool>();
      if( options.count( "http-alias" )) {
         const auto& aliases = options["http-alias"].as<vector<string>>();
         my->valid_hosts.insert(aliases.begin(), aliases.end());
      }
...

这是给http的请求加了限制呐,那么我们可以打开所有http的权限,或者指定一个http-alias

所以我们编辑一下config.ini的文件

在文件的最后加入

http-validate-host = false

或者

http-alias = 127.0.0.1:8888

然后我们重新执行一下

$ docker restart nodeos

nodeos

于是我们预期的结果就出现了

下一篇我们介绍几个常用的API

本篇没有ps,>_< 

猜你喜欢

转载自www.cnblogs.com/dabingguozi/p/9347061.html
eos