目标:如何把自己做的REST API给更多的开发者使用?
1. 可以统计调用次数,便于计费
2. 可以限制调用频率,便于控制负载压力
对比了几个Open API Platfrom,最后选了api-umbrella
我在ubuntu上安装比较简单
$ sudo apt-key adv --keyserver hkp:// http:// keyserver.ubuntu.com:80 --recv-keys 367404D553B42995
$ echo "deb http:// dl.bintray.com/nrel/api -umbrella-ubuntu bionic main" | sudo tee /etc/apt/sources.list.d/api-umbrella.list
$ sudo apt-get update
$ sudo apt-get install api-umbrella
sudo /etc/init.d/api-umbrella start 启动
api-umbrella default使用90端口,虽然我看了说明可以换端口,但是考虑这个平台以后就是我所有API的入口,80端口就给它了。下面我按照如下步骤进行评估
一,综合简述 api umbrella
- api-umbrella用lua配置Nginx,来实现API 网关,这个Spring Gateway也差不多
- api-umbrella用ElasticSearch存储 统计信息,我监控了一下进程发现那个java进程
- api-umbrella基本提供两个视角。
- 一个是管理员,设定API映射
- 一个是普通用户,注册系统账号获得API KEY,并使用API KEY调用API
二,按照两个视角试用
admin视角
1. 首先作为平台管理员添加一个REST API。这里我提供了一个youtube的API。
1.1 访问http://192.168.2.22/admin ip就是你安装机器的地址,初次登录会设定admin 账号
1.2 配置API BackEnd 添加一个 API
1.3 主要是设定url 映射,已经rate limit,是限定访问次数
1.3 设定完API映射后,一定要publish API,否则不生效
User视角
2. 注册一个API User,就是API的消费者,也就是未来客户。访问http://192.168.2.22/ 即可。我因为修改api - umbrella的代码,所以变成了中文界面
2.1 一定要让用户保留好API Key,请求的时候必须带着API KEY。这是用户注册后,能看到API KEY。请求的时候要带上。作为admin 在后台能看到所有用户的API_KEY
三, API 调用使用
测试一下,从http://192.168.2.22 请求被转发到http://192.168.2.18,并进行调用统计
curl https:// 192.168.2.22/video/yout ube/detail?id=ph5e694f14d6b1c&domain=youtube&api_key=xc85Xr3GmrTSfGzDBXTmYGrfACXszr8dPD36fPjG
结果返回正常。这里最重要的就是api_key,由于我开始配置时要求用户使用必须携带api_key
利用admin,看看统计结果页面,我选择了by user,看看我的客户用的如何,选择注册的用户邮件箱。我有两个客户开始使用
综合的说,可以用,先用用看。快速发布API是重要的。