从0到1自建内部使用的API授权平台竟然那么容易?!

本文涉及的产品
大数据开发治理平台DataWorks,资源组抵扣包 750CU*H
简介: 最近看了一些API的管理平台如API Layer、boomi、Odoo等平台,思考如果自己动手搭建一个API授权平台是否困难,结果透过网上的资源就能搭建起一个简易且可扩展API授权平台,且大部份依赖的功能都可免费体验,此文分享这次搭建的代码跟使用到的工具,希望想要在公司内部建立自用的API授权平台能很快地实现。

大家好,最近看了一些API的管理平台如API LayerboomiOdoo等平台,思考如果自己动手搭建一个API授权平台是否困难,结果透过网上的资源就能搭建起一个简易且可扩展API授权平台,且大部份依赖的功能都可免费体验,下文就来跟大家分享一下这次搭建的代码跟使用到的工具,希望想要在公司内部建立自用的API授权平台能很快地实现。


GitHub代码库: https://github.com/datafe/api-market


Demo


视频链接

image.png



Getting Start


直接动手开始搭建从API上线到用户申请API与调用API。


  1. 依赖的服务及工具


阿里云帐号

申请网址

费用: 免费

DataWorks (包含数据服务)

开通网址

费用: 基础版不限时长免费试用、专业版限时特价体验

阿里云网关

开通网址

费用: 计费说明 (共享实例月累计1千万次调用以下,每万次0.06人民币)

Linux服务器

自建或申请云厂商服务器


DataWorks数据服务功能强大,可基于多种数据引擎 (StarRocks/Hologres/MaxCompute/HBase/OTS/MySQL/PostgreSQL/Snowflake/Redshift) 开发上层API,也能注册已有的API,此文为搭建用户授权平台,为求演示方便,此示例以注册API节点为例,更详细的功能可参考产品操作指南




  1. 准备一个要提供被订阅的API (基于示例演示方便,这边参考免费公开接口,如查询香港当前气候信息)


curl https://data.weather.gov.hk/weatherAPI/opendata/weather.php?dataType=rhrread&lang=en
# {"temperature": {"data":[{"place":"Tsuen Wan Ho Koon","value":20,"unit":"C"}]}}


  1. 打开DataWorks数据服务注册API (建立API之前需要先建立业务流程,新建业务流程需要绑定一个网关分组)



于新建注册API弹框填入以下必填信息,并送出


API 名称: hk_current_weather_info
API Path: /hk_current_weather_info
描述: get Hong Kong current weather info
目标文件夹: 选一个已先建立好的业务流程





建立注册API后,于打开的新节点填入以下信息 (若原API有认证信息,可放置于常量参数,DataWorks数据服务会对外隐藏常量参数)


后台服务 Host: https://data.weather.gov.hk
后台服务 Path: /weatherAPI/opendata/weather.php
请求参数:
参数名 dataType 默认值 rhrread
参数名 lang 默认值 en



点右上角测试按钮 (或按F8),测试成功后,关闭弹框,点右上角提交



提交成功后,自动会打开右侧版本,点发布按钮,发布API成功后,开始建立自建的授权平台



  1. 下载此代码压缩档 (至此GitHub下载product-code.zip) 并解压缩,修改server/OpenApiClient.js的AK信息,AK信息可从阿里云访问控制上获取,而后将代码放置到Linux服务器。



  1. 于Linux服务器安装Node.js(安装参考或参考附录),透过NPM安装Yarn,打指令npm install --global yarn,安装完后透过指令yarn install-server & yarn start即可运行服务,默认接口为3001 (可自行修改server/index.js里的port设定)


npm install --global yarn
yarn install-server & yarn start



看到 express running at http://localhost:3001 即已运行成功


  1. 打开网址后点Go to Register或打开/register注册页,注册一个用户帐号,注册成功后,可以在API网关应用列表看到新增的用户。





  1. 使用新建的用户登录 (密码默认为test,可以在server/index.js里修改)



  1. 登录后,查看上线的APIs,即可看到我们建立的hk_current_weather_info API,点Apply进行申请。申请成功后可在Authorized APIs查看,点Details查看API调用信息。





  1. 点Authorized Info查看调用认证信息,并用curl验证是否可打通


curl'http://fullpath?appCode=yourAppCode'




架构图


首先先介绍一下API平台大概包含几种使用场景:

  • 开发者开发API (测试与版本管理)
  • 管理者管理API (发布与下线)
  • 用户调用API (安全审核)
  • 用户管理API (订阅/退订)


我们这次搭建重点在用户管理API的场景,并会介绍其代码实作细节与运作方式,下面就四个场景分别介绍。


开发者开发API

一开始最重要的是要提供怎样的API出来,且还能让一群开发者共同开发各式各样的APIs,需要有数据源管理、SQL开发、版本管理、测试环境、函数计算等功能,这边我们使用DataWorks数据服务来承担此角色,且开通DataWorks基础版不收取费用。DataWorks数据服务还能注册既有的API,能封装隐藏原认证信息,注册后即可管理 (支持版本管理)。





管理者管理API

针对开发出来的APIs进行上线后的处理,更偏重于计量、日志分析、授权管理、限流等工作,DataWorks数据服务都支持这些重要功能,开通DataWorks基础版不收取费用,再搭配阿里云网关管理,事半功倍。






用户调用API


API上线后,调用的方式可以透过curl指令或Postman进行测试调用,应用里调用可参考各编程语言调用HTTP Request的方法。调用时的认证方式可以参考阿里云网关认证方式



用户管理API




此篇重点实作的部份在上图黄色区域,透过DataWorks数据服务阿里云网关,就能建立起自己的API授权平台,且开通DataWorks基础版不收取费用。(透过阿里云网关能上架API到阿里云API市场,不在本篇讨论范围)

实作介绍


平台使用到Node.js+React来实现。


实现方式


后端实现方式


主要有三个部份:

  • 对接阿里云 (封装AK、Open API)
  • 前端接口 (前端使用、登录态管理)
  • 运行



对接阿里云


生产调用阿里云Open API的客户端(封装了自用AK),AK可从阿里云访问控制上获取,放置服务端环境参数或直接替换下图参数即可。



参考Open API的SDK示例来添加调用实现,如下图的查询已发布API列表,透过上图的阿里云Open API的客户端实例进行调用。




前端接口


使用Express.js运行后端



对外透出接口给前端,并对内调用Open API



建立一个简易的登录态管理 (建议使用Redis或数据库管理)



登录密码此处需要自行实作,目前写定为 test



运行


安装Node.js后,透过NPM安装Yarn,打指令npm install --global yarn,安装完后进入到server文件夹,透过指令yarn & yarn start即可运行服务,默认接口为3001 (可自行修改)


cd server
npm install --global yarn # 若安装过yarn可跳过此步yarn install # 若安装过,可跳过此步yarn start




需先打包完前端生产代码(于client文件夹的dist文件夹)后,于浏览器直接打开http://localhost:3001,就能打开生产环境。


前端实现方式


前端采用React方式实现,透过Vite打包脚本,开发环境后端proxy默认为http://localhost:3001(可修改)



开发代码放置src文件夹里,pages内列出每一页的代码。



登入页面后,这边实现了简单的登入态检查,可统一封装在请求对象里。



开发运行方式为,先安装Node.js,并透过NPM安装Yarn,打指令npm install --global yarn,安装完后进入到client文件夹,打指令yarn & yarn start,即自动打开浏览器 http://localhost:3000/


cd client
npm install --global yarn # 若安装过yarn可跳过此步yarn install # 若安装过,可跳过此步yarn start



打包生产,进入到client文件夹打指令yarn build,即会打包生产代码于dist文件夹。


cd client
npm install --global yarn # 若安装过yarn可跳过此步yarn & yarn build



API市集


此页列出所选地域已上架的线上API(代码于client/src/pages/ApiHome/ApiList/index.tsx),用户可以点Apply进行订阅使用。



点选Apply后即跳出弹框,若有其它计费或特殊流程可于此部骤进行扩展。



地域选单可于client/src/pages/ApiHome/ApiList/index.tsx文档进行修改。



已授权API列表


此页列出用户所有地域有权限使用的线上API(代码于client/src/pages/ApiHome/AuthorizedApiList/index.tsx),用户可以点Remove进行退订。




API详情


在API表格最右侧点Details,即可呼出详情,会列出调用API支持的协议与调用参数信息等,代码可参考client/src/pages/ApiHome/ApiDetails/index.tsx。



API调用认证


代码可参考client/src/pages/ApiHome/AuthorizedInfo/index.tsx。


登录


登录页代码于client/src/pages/Login/index.tsx,可自行修改样式或内容。



注册


登录页代码于client/src/pages/Register/index.tsx,可自行修改样式或内容。



部署


透过云厂商部署一个Node.js服务器可以参考此篇文章,或著自建一个Linux服务器安装Node.js,可以参考官方文档



相关 Open APIs

查询API列表 https://next.api.aliyun.com/api/CloudAPI/2016-07-14/DescribeDeployedApis

建立应用 https://next.api.aliyun.com/api/CloudAPI/2016-07-14/CreateApp

重置应用密钥 https://next.api.aliyun.com/api/CloudAPI/2016-07-14/ResetAppSecret

查询应用密钥 https://next.api.aliyun.com/api/CloudAPI/2016-07-14/DescribeAppSecurity

查询应用列表 https://next.api.aliyun.com/api/CloudAPI/2016-07-14/DescribeAppAttributes

对一个应用授权多个API权限 https://next.api.aliyun.com/api/CloudAPI/2016-07-14/SetApisAuthorities

对一个API授权多个应用权限 https://next.api.aliyun.com/api/CloudAPI/2016-07-14/SetAppsAuthorities

对一个应用撤销多个API权限 https://next.api.aliyun.com/api/CloudAPI/2016-07-14/RemoveApisAuthorities

对一个API撤销多个应用权限 https://next.api.aliyun.com/api/CloudAPI/2016-07-14/RemoveAppsAuthorities


源代码参考

GitHub https://github.com/datafe/api-market


(附) Aliyun ECS + Node.js 部署 (中国区)

此为使用阿里云 ECS 部署此 API 授权平台的步骤


  1. 购买 Aliyun ECS 按量付费,链接


按需购买规格,使用 CentOS,若要对外需加购公网 IPv4 地址。



  1. 修改实例登录密码,链接




  1. 设定安全组访问规则,需要 443,链接



  1. 透过 Workbench 连接实例,参考此链接安装环境,然后安装 Node 版本 v16.16.0。




## 安装完 NVM 后,使用 v16.16.0 版本
nvm use 16.16.0



  1. 透过左侧选单界面上传 product-code.zip 至 /opt。



  1. 安装 unzip 指令,并解压缩 product-code.zip。


cd /opt
yum install unzip -y
unzip product-code.zip -d api-market


  1. 安装 cnpm 取代 npm,参考链接


npm install cnpm -g --registry=https://registry.npmmirror.com
cd /opt/api-market/server
cnpm install


  1. 打开 /opt/api-market/server/index.js,修改伺服器 Port 至 443 (可于左边侧边栏对文档按右键或双击文档,使用编辑器修改内容)。




  1. 阿里云获取主帐号 AK 信息,进入到 /opt/api-market 修改 server/OpenApiClient.js AK 信息。




  1. 运行伺服器。


cd /opt/api-market/server
cnpm start




  1. 安装长驻套件 pm2,让伺服器可以一直运行


cd /opt/api-market/server
cnpm install -g pm2
## 启动
cnpm run pm2-start
## 启动 使用所有CPU核心的集群
cnpm run pm2-start-max
## 停止
cnpm run pm2-stop
## 停止所有
cnpm run pm2-stop-all
## 重启
cnpm run pm2-restart
## 重启所有
cnpm run pm2-restart-all
## 关闭
cnpm run pm2-delete



如网站需要三方公证的 SSL 证书可以至阿里云免费申请,链接





相关实践学习
基于Hologres轻量实时的高性能OLAP分析
本教程基于GitHub Archive公开数据集,通过DataWorks将GitHub中的项⽬、行为等20多种事件类型数据实时采集至Hologres进行分析,同时使用DataV内置模板,快速搭建实时可视化数据大屏,从开发者、项⽬、编程语⾔等多个维度了解GitHub实时数据变化情况。
目录
相关文章
|
3月前
|
机器学习/深度学习 人工智能 供应链
唯品会 API 赋能,唯品会平台母婴商品用户需求洞察
在电商竞争激烈的环境下,唯品会作为中国领先品牌折扣平台,母婴类目正快速增长。通过开放API赋能,平台实现对母婴用户需求的深度洞察,涵盖数据整合、智能分析与个性化推荐。本文解析API如何驱动需求预测、情感分析与用户细分,助力平台提升运营效率与用户满意度,展望未来结合AI技术的潜力。
111 2
|
3月前
|
数据采集 人工智能 监控
唯品会 API 助力,唯品会平台美妆商品营销效果评估
在电商竞争激烈的环境下,唯品会作为领先特卖平台,其美妆品类的营销效果评估至关重要。通过唯品会 API,商家可实时获取商品、销售及用户行为数据,精准计算 ROI、转化率等关键指标,实现数据驱动的营销优化。本文介绍 API 的应用方法,并结合案例说明如何提升营销效率与销售表现。
111 0
|
3月前
|
JSON 搜索推荐 API
唯品会 API 接口:唯品会平台促销活动订单转化率提升
在电商中,促销活动是提升销量的重要手段。唯品会作为领先的品牌折扣平台,通过限时抢购、优惠券等方式吸引用户,但如何提升订单转化率仍是关键挑战。本文分析了用户决策延迟、信息不对称、个性化不足等问题,并介绍如何利用唯品会 API 接口实现数据驱动优化。通过实时数据同步、个性化推荐和自动化处理,API 可帮助开发者提升转化率,案例显示优化后转化率平均提升 20%-30%。同时,自动化流程降低了运营成本,增强了用户体验。集成唯品会 API,是实现高效促销、提升用户粘性的重要路径。
127 3
|
4月前
|
数据挖掘 API 数据安全/隐私保护
小红书电商 API 接口:小红书平台电商活动话题热度监测
小红书作为领先社交电商平台,通过API接口实现电商话题热度监测,助力品牌实时掌握用户兴趣与互动趋势,提升运营效率与营销精准度。
214 1
|
4月前
|
数据采集 监控 搜索推荐
小红书电商 API 助力,小红书平台电商笔记营销效果量化
在数字化营销时代,小红书凭借用户生成内容推动电商转化,但营销效果常因数据碎片化难以衡量。本文探讨如何借助小红书电商 API,精准量化曝光量、点击率、转化率等关键指标,提升营销效率与投资回报率。
121 1
|
3月前
|
人工智能 监控 小程序
【快递鸟】选择对接你的物流商城/小程序的物流API平台
在电商竞争日益激烈的今天,物流体验已成为影响用户留存和复购的关键因素。一个高效、透明、稳定的物流系统,对于物流商城或小程序来说至关重要。然而,自建物流查询系统需要对接众多快递公司,开发周期长、维护成本高、数据整合困难。
195 0
|
3月前
|
数据采集 搜索推荐 API
苏宁易购 API 接口:苏宁易购平台促销活动用户参与度分析
本文探讨如何利用苏宁易购API接口进行促销活动中的用户参与度分析。通过API获取数据,定义关键指标如点击率、转化率及参与度指数,并结合统计分析与回归模型揭示用户行为模式。以“618大促”为例,展示数据驱动的优化策略及其成效,提升用户粘性与销售转化。
116 0
|
3月前
|
人工智能 供应链 算法
苏宁易购 API 赋能,苏宁易购平台生鲜商品配送时效提升
在电商竞争激烈的当下,苏宁易购通过API技术提升生鲜配送效率,实现库存、物流与用户的智能协同,优化供应链管理,缩短配送时间,提高用户满意度,为未来技术融合奠定基础。
128 0
|
4月前
|
供应链 搜索推荐 API
苏宁易购 API 助力,苏宁易购平台 3C 产品销售策略优化
在电商竞争激烈的环境下,苏宁易购通过API优化3C产品销售策略,实现数据驱动决策、个性化推荐与智能库存管理,提升销售额与运营效率,增强用户体验,巩固市场竞争力。
133 0
|
4月前
|
JSON 监控 数据挖掘
抖音电商 API 接口:抖音平台电商活动热度实时监测
抖音电商API接口助力实时监测活动热度,支持商品销量、用户互动等数据获取,帮助商家优化营销策略,提升平台用户体验。
325 0

热门文章

最新文章