Redian新闻
>
趣谈 | 什么是API货币化

趣谈 | 什么是API货币化

公众号新闻

作者:刘维,API7.ai 网关开发工程师

摘要:本文介绍 API 货币化的概念,应用场景和具体实践。


什么是 API 货币化?
想象一下,你成功开发并部署了一个服务,可以搜集你所在城市所有超市的打折和优惠信息。
现在,有开发者想使用你的服务,需要你提供相应的 API,他们将付费获取你的授权服务,然后通过你开发的 API 得到打折与优惠信息。
像这样通过 API 的方式将数据的使用转化为金钱的模式,就叫做 API 货币化。API 货币化是使 API 网络服务获得盈利的理想方式。
在决定采用 API 货币化的商业模式后,首先需要考虑的就是如何计费。通常有两种计费方式:
1.按次收费
2.服务订阅
不管采用哪种方式,都需要统计不同身份用户调用 API 的数量,对超出一定数量的用户要进行限流和限速操作。所以,计费的关键点在于能否识别出用户的身份。
大部分购买服务的用户属于企业员工。该群体登录企业账号后,理应能够共享同一个计费账号,所以能否识别出用户所属组织也同样重要。
API 货币化有哪些应用?
现实生活中 API 货币化的应用无处不在,例如最常见的验证码功能、云厂商提供的消息队列与文字识别服务、安全厂家提供的 WAF (Web 应用防火墙)与内容过滤等服务。这些服务模式的市场需求量十分庞大,以至于我们迫切需要一个合适的技术栈来为 API 货币化打下坚实的基础,也就是说我们需要对 API 进行精细化管理。
在管理 API 时,我们需要控制不同身份的用户在不同场景下的发布权限,并且要确保发布这些 API 符合组织标准,诸如 URL 模式、命名约定、访问控制规则等。不同职能的部门对 API 的管理手段也不尽相同,通常包括对已发布的 API 进行更新或设计改进;执行流量控制、速率限制和安全策略等;实时观测 API 使用情况、性能及其他指标。
用来管理并解决使用 API 过程中的各种问题的工具,就叫做 API 网关。作为中央代理,API 网关将所有从客户端传入的请求路由到预定的目的地(后端服务),使 API 更安全、更易于管理。API 网关通常支持各种授权和认证协议,能够对 API 进行复杂的权限控制,还有速率限制等诸多功能。
目前市面上有许多流行的 API 网关开源项目,其中较引人注目、且广泛应用的就是 Apache APISIX(云原生微服务网关)和其替代的企业 SaaS 解决方案API7 Cloud。(https://www.apiseven.com/)
APISIX 的 API 货币化实践
Apache APISIX 不仅支持上述的各种功能,通过其丰富的插件,还支持与 Prometheus、OpenTelemetry、Apache Skywalking 等多种可观察性平台进行集成,以进一步增强其分析 API 的能力并获得完整的可视性。
针对上文提到的识别用户身份,Apache APISIX 提出了 Consumer(消费者)的概念。
不同 Consumer 对应不同的用户,通过在 Consumer 上绑定对应的插件和上游,不同的 Consumer 请求同一个 API。经用户认证体系识别后,网关服务根据当前请求用户的信息,自动匹配不同的 Plugin 或 Upstream 配置,此举为差异化用户管理提供了极大的便利。
针对前文提到的同一企业多个不同职能的用户,仅支持 Consumer 还不足以满足需求。当多个 Consumer 共享同一个消费额度,若只管理每个 Consumer 的配置,操作就会过于繁琐。因此 APISIX 提出了 Consumer Group 的概念,有了 Consumer Group,多个 Consumer 就能共享同一套配置和同一个消费配额。
以上是 Apache APISIX 在 API 货币化上的实践思路,下面我们来看看具体的应用与配置。
以下示例可为企业配置限流限速,让企业的用户共享同一配置。
# create consumer groupcurl 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 1curl 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 2curl 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 routecurl 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 routecurl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'...X-RateLimit-Limit: 200X-RateLimit-Remaining: 199...

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

# change count value to 2 requests per minutecurl 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 routecurl -i http://127.0.0.1:9180/get -H 'apikey: auth-two'...X-RateLimit-Limit: 2X-RateLimit-Remaining: 1...



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



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



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



# create another routecurl 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 countcurl -i http://127.0.0.1:9180/get -H 'apikey: auth-one'...X-RateLimit-Limit: 2X-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 网关。Apache APISIX 作为当下最热门的 API 网关之一,在货币化的道路上已经有数百家企业的丰富实践,提出的 “Consumer、Consumer Group” 等概念,极大地方便了用户对 API 的管理,赋能企业 API 货币化顺畅落地。



 

OSCHINA 2022中国开源开发者问卷启动

你的反馈很重要!

点击下方小程序立即参与

END



怎么理解开源世界里的白嫖?



这里有最新开源资讯、软件更新、技术干货等内容

点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦~

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
从“压缩面包”到“鱼香肉丝”,趣谈航天食品的前世今生“僵尸行走”:万圣节的预演有感染者CT出现白肺,什么是白肺?原因是什么?是奥密克戎导致的吗?刚刚,官方权威回应……大反攻!港股尾盘突然拉升,中概股也跟涨,什么情况?2万亿赛道崛起,非美货币大涨,国债也有反应那年火车上的故事(下集)(二)【探索】兔子耳朵为什么竖起来?嘴巴为什么是三瓣?这些小知识你知道吗→中国和阿拉伯世界的重大突破,石油人民币化再下一城意外突发!平壤突然下达封锁令,巴基斯坦货币疯狂跳水!发生了什么?"巨大规模空袭"爆发,影响多大?一个加密货币之谜:为什么没有人做空FTX?又一家!澳洲知名加密货币交易公司申请破产!专家提醒:加密货币有危险!【全球市场】国际货币体系“三足鼎立”之货币区视角发生了什么?亚洲两大货币集体飙涨,"黑天鹅"真相曝光!A股两大"派系"持续争夺,反弹将继续?人民币崛起:从红色货币到国际货币 | 好书推荐未来的货币会是什么样子?趣谈美国大学的对抗传统对青少年要“管大放小”,什么是大、什么是小,如何拿捏?什么是飞虎队,什么是PTU——香港电影中的香港警察什么是长期受益的科学人文素养?如何培养?神童の诅咒! 加拿大数字货币大亨、香港华人加密货币创办者等神秘死亡和早逝的疯狂阴谋论....华府消息|阿根廷巴西将使用共同货币 并邀请他国共建全球第二大货币联盟一场说走就走的旅行~金色的布拉格减少对美元的依赖!他们商量创建共同货币,"全球第二大货币区"要来了?孩子不傻,分得清什么是不求回报的爱,什么是以爱之名的高利贷余华:当他人的疼痛成为自己的疼痛,我真正领悟到什么是人生,什么是写作美国入境档案--孔祥熙费起鹤1901年旧金山【宏观市场】住房租赁贷款支持计划是又一次棚改货币化吗?重温普希金的渔夫与金鱼。突发黑天鹅!暴跌20%,这国货币崩了,什么情况?美国210万亿债务告急,巨头警告!英国10万公务员要罢工什么是内脏脂肪?为什么减少内脏脂肪很重要!英国新首相看好数字货币!苏纳克想让英国成为全球数字货币中心
logo
联系我们隐私协议©2025 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。