使用 hapijs 快速构建自己的 api 服务

最近接手的 Stellar 钱包的外包小活需要搭建个 API 服务,考虑再三,由于 Stellar SDK 中我只会 Javascript,因此打算使用 Nodejs 去完成这个服务搭建工作。
大约5年前曾经用 Express 框架搭建过一个记事本网站,不过这次是做 API,用 Express 感觉好像太重了,于是搜索了下,发现了 hapi 这个框架。
说干就干。
首先初始化一个 Nodejs 项目
1 | npm init |
然后安装一下 hapi,
1 | npm install hapi -s |
创建一个 index.js 文件,并粘贴下面的代码
1 | 'use strict'; |
启动一下,并访问 http://localhost:8877/?r=ety001,会看到 Hello, ety001。
这样最简单的 API 服务就搞定了。
这里需要注意下 cors 这个配置,这个设置为 true,就可以避免跨域的报错,不过安全性需要注意,详细的配置参数请看 hapi 的文档。
除此之外,我还加入了缓存。因为每次去获取 Trade Aggregation 数据都需要大约5–6秒,这样的性能还是不行的。因此加入一个10秒的缓存,10秒内访问,将会返回缓存数据。
加入方法很简单,大致的代码结构如下:
1 | const getTradePair = async (pointPair) => { |
这里说明下。 traidPairCache 中 generateFunc 方法就是在缓存未命中的时候,去获取新数据的方法。第一个参数相当于是缓存的标示,generateTimeout 就是 generateFunc 的执行超时时间。
hapi 使用 catbox 来实现缓存,框架默认使用
memory作为缓存介质。
以上就是目前我所用到的功能,hapi 框架真的很轻,在处理些类似我这样的需求的时候,最省时间,尤其再配合 Docker,把服务直接做成镜像,部署起来也就一句话的事儿~~