趣谈之什么是 API 货币化?

利用APISIX实现API货币化的方法

本文介绍了 API 货币化和 APISIX 实现 API 货币化方法。

作者刘维,API7.ai 技术工程师,Apache APISIX Contributor

原文链接

什么是 API 货币化

想象你开发并部署了一个服务,能够搜集你所在城市所有超市的打折和优惠信息,其他的开发者想要使用你的数据,就需要你提供相应的 API, 然后其他开发者通过支付费用获得你的授权,再使用你提供的 API 获取想要的数据,像这样通过 API 的方式将数据的使用转化为金钱就是 API 货币化,API 货币化是使你的服务盈利的一种理想方式。

API货币化

在决定采用 API 货币化的商业模式后,接下来需要考虑的就是如何计费,可以选择按调用次数计费,或者直接订阅计费,但不管采用哪种计费方式,都需要统计不同用户的 API 调用数量,如果超出数量还需要进行限流限速操作,所以能否识别出用户的身份很关键。但仅仅识别出用户的个人身份还不够,因为往往购买服务的都是企业用户,企业员工在登录企业账号后,需要能够共享同一个计费账号,所以识别出用户所属组织也同样重要。

API 货币化的应用

现实生活中 API 货币化的应用无处不在,例如每个人都要接触的验证码功能,各个云厂商提供的消息队列,文字识别等服务,各个安全厂家提供的 WAF 和内容过滤等服务,这种模式是如此的成功,以至于我们迫切需要一个合适的技术栈来为 API 货币化打下坚实的基础,也就是说我们需要对 API 进行精细的管理。

在管理 API 时,我们需要能够控制谁可以在哪里发布什么,并且要确保发布这些 API 符合组织标准,诸如 URL 模式、命名约定、访问控制规则。并且能让每个业务职能部门独立管理自己的 API,包括对已发布的 API 进行更新或设计改进,执行流量控制、速率限制和安全策略。也需要能够实时观测使用情况、性能及其他指标。

要对 API 进行管理需要引入的工具就是 API 网关,API 网关可以帮助你解决管理 API 过程中遇到的各种问题。作为一个中央代理,API 网关将所有从客户端传入的请求路由到预定的目的地(后端服务),使你的 API 更安全和更容易管理,同时大部分 API 网关支持各种授权和认证协议,能够对 API 进行复杂的权限控制,还有速率限制等诸多功能。

有许多流行的 API 网关开源项目,其中最为引人注目的就是 Apache APISIX 和其替代的企业 SaaS 解决方案 API7 Cloud。

APISIX 的 API 货币化实践

Apache APISIX 不仅支持上面提到的各种功能,还通过其丰富的插件,能够与 Prometheus、OpenTelemetry、Apache Skywalking 等多种可观察性平台进行集成,以进一步增强其分析 API 的能力并获得完整的可视性。同时 Apache APISIX 针对上文提到的识别用户身份,提出了 consumer 的概念。

consumer

不同 consumer 对应不同的用户,通过在 consumer 上绑定对应的插件和上游,不同的 consumer 假如请求同一个 API,经用户认证体系识别后,网关服务根据当前请求用户信息,会对应不同的 Plugin 或 Upstream 配置,方便对不同的用户进行管理。

consumer

但是仅仅支持 consumer 还不够,针对上文提到的企业用户,需要多个 consumer 共享同一个消费额度,并且如果只能分别管理每个 consumer 的配置,操作就太过繁琐了。因此 APISIX 提出了 consumer group 的概念,有了 consumer group,多个 consumer 就能共享同一套配置和同一个消费配额。

consumer group

了解了 APISIX 在 API 货币化的实践,下面我们来看看具体的应用。

  • 给企业配置限流限速,企业的用户共享同一配置
# create consumer group
curl http://127.0.0.1:9180/apisix/admin/consumer_groups/company_a -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "plugins": {
        "limit-count": {
            "count": 200,
            "time_window": 60,
            "rejected_code": 503,
            "group": "$consumer_group_id"
        }
    }
}'

# create consumer 1
curl http://127.0.0.1:9180/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "username": "jack",
    "plugins": {
        "key-auth": {
            "key": "auth-one"
        }
    },
    "group_id": "company_a"
}'

# create consumer 2
curl http://127.0.0.1:9180/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "username": "johnson",
    "plugins": {
        "key-auth": {
            "key": "auth-two"
        }
    },
    "group_id": "company_a"
}'

# create route
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri": "/get",
    "plugins": {
        "key-auth": {}
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "httpbin.org": 1
        }
    }
}'

# hit the route
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'
...
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 199
...

curl -i http://127.0.0.1:9180/get -H 'apikey: auth-two'
...
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 198
...

# change count value to 2 requests per minute
curl http://127.0.0.1:9180/apisix/admin/consumer_groups/company_a -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "plugins": {
        "limit-count": {
            "count": 2,
            "time_window": 60,
            "rejected_code": 503,
            "group": "$consumer_group_id"
        }
    }
}'

# hit the route
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-two'
...
X-RateLimit-Limit: 2
X-RateLimit-Remaining: 1
...


curl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'
...
X-RateLimit-Limit: 2
X-RateLimit-Remaining: 0
...


# no count, HTTP 503
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'
HTTP/1.1 503 Service Temporarily Unavailable


# after a minute, count recover
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'
...
X-RateLimit-Limit: 2
X-RateLimit-Remaining: 1
...


# create another route
curl http://127.0.0.1:9180/apisix/admin/routes/2 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri": "/anything",
    "plugins": {
        "key-auth": {}
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "httpbin.org": 1
        }
    }
}'

# you could see both routes share the same count
curl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'
...
X-RateLimit-Limit: 2
X-RateLimit-Remaining: 1
...


curl -i http://127.0.0.1:9180/anything -H 'apikey: auth-one'
HTTP/1.1 503 Service Temporarily Unavailable
...

总结

企业通过 API 货币化将服务和数据转化为收入,要实现 API 货币化需要引入专业的 API 管理工具:API 网关,现在最热门的 API 网关是 APISIX,APISIX 在 API 货币化上有丰富的实践,包括 consumer, consumer group 等概念极大方便了用户对 API 的管理,赋能企业更顺畅的将 API 货币化落地。

【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开研究,重点探讨其系统建模与控制策略,结合Matlab代码与Simulink仿真实现。文章详细分析了无人机的动力学模型,特别是引入螺旋桨倾斜机构后带来的全驱动特性,使其在姿态与位置控制上具备更强的机动性与自由度。研究涵盖了非线性系统建模、控制器设计(如PID、MPC、非线性控制等)、仿真验证及动态响应分析,旨在提升无人机在复杂环境下的稳定性和控制精度。同时,文中提供的Matlab/Simulink资源便于读者复现实验并进一步优化控制算法。; 适合人群:具备一定控制理论基础和Matlab/Simulink仿真经验的研究生、科研人员及无人机控制系统开发工程师,尤其适合从事飞行器建模与先进控制算法研究的专业人员。; 使用场景及目标:①用于全驱动四旋翼无人机的动力学建模与仿真平台搭建;②研究先进控制算法(如模型预测控制、非线性控制)在无人机系统中的应用;③支持科研论文复现、课程设计或毕业课题开发,推动无人机高机动控制技术的研究进展。; 阅读建议:建议读者结合文档提供的Matlab代码与Simulink模型,逐步实现建模与控制算法,重点关注坐标系定义、力矩分配逻辑及控制闭环的设计细节,同时可通过修改参数和添加扰动来验证系统的鲁棒性与适应性。
【硕士论文完美复现】【价格型需求响应】基于需求侧响应的配电网供电能力综合评估(Python代码实现)内容概要:本文档围绕“基于需求侧响应的配电网供电能力综合评估”这一主题,提供了一个硕士论文级别的研究复现资源,重点聚焦于价格型需求响应机制在提升配电网供电能力方面的应用与评估。文中通过Python代码实现相关模型,涵盖需求响应策略建模、用户用电行为弹性分析、配电网供电能力量化评估等内容,旨在通过需求侧管理手段优化电力资源配置,提升电网运行效率与可靠性。此外,文档还附带多个科研辅助资源链接,覆盖智能优化算法、机器学习、电力系统仿真等多个技术领域,服务于综合性科研需求。; 适合人群:具备一定电力系统基础知识和Python编程能力的研究生、科研人员及从事智能电网、能源管理相关工作的技术人员。; 使用场景及目标:①复现价格型需求响应下配电网供电能力评估模型;②深入理解需求响应机制对电网供需平衡的影响;③结合实际数据开展仿真分析,支撑学术研究或工程项目决策。; 阅读建议:建议读者结合提供的代码资源与网盘资料,按照文档逻辑逐步实践,重点关注模型构建与算法实现细节,并可通过修改参数或引入真实数据进行扩展性研究,以深化对需求响应与电网能力评估之间关系的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

API7.ai 技术团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值