大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。
图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG
我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。
展菲:您的前沿技术领航员
大家好,我是展菲!
全网搜索“展菲”,即可纵览我在各大平台的知识足迹。
公众号“Swift社区”,每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
微信端添加好友“fzhanfei”,与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
最新动态:2025 年 3 月 17 日
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!
在企业级低代码平台中,页面组件频繁调用外部接口是常态。如果每个页面都自行集成 API,很快就会出现接口冗余、权限不统一、安全不可控等问题。更可怕的是,一旦第三方 API 更新,平台维护成本急剧上升。
本篇文章将带你从“裸连外部 API”迈向“网关式统一接入”,通过 API Gateway 实现一处注册、全局调用,同时支持认证鉴权、限流熔断、缓存加速等功能。我们会以 Kong 与 APISIX 两个开源 API 网关为例,结合一个低代码平台外部服务统一接入场景,提供完整落地方案与实战代码。
低代码平台的核心目标是“让业务方自己拖拖拽拽就能完成系统搭建”。但随着平台开放性越来越强,“如何接入外部数据源” 成为关键难题。
举个典型场景:
业务同事希望通过拖拽一个组件,实现“查询供应商库存”的功能,但这个库存服务来自外部 ERP 系统。现在每个页面自己连 ERP,一旦接口改动、身份过期、限流失控,全平台崩了。
这个问题不光是“调用麻烦”,更是平台工程治理的问题:
这些,正是 API Gateway 擅长的领域。
┌────────────┐
│ 低代码平台 │
└─────┬──────┘
│
▼
┌───────────────┐
│ API Gateway │(Kong / APISIX)
│ - 认证 │
│ - 限流 │
│ - 路由 │
│ - Mock 缓存 │
└─────┬─────────┘
▼
┌─────────────────────┐
│ 外部服务(ERP/CRM/AI)│
└─────────────────────┘
我们分别用 Kong 与 APISIX 做一次完整 Demo。
git clone https://github.com/apache/apisix-docker.git
cd apisix-docker/example
docker-compose -f docker-compose.yml up -d
# 通过 admin API 创建一个上游
curl http://localhost:9180/apisix/admin/upstreams/1 -X PUT -d '
{
"type": "roundrobin",
"nodes": {
"httpbin.org:80": 1
}
}'
# 创建 route 路由
curl http://localhost:9180/apisix/admin/routes/erp-api -X PUT -d '
{
"uri": "/erp/query",
"upstream_id": "1",
"plugins": {
"limit-count": {
"count": 10,
"time_window": 60,
"rejected_code": 429,
"key": "remote_addr"
},
"proxy-rewrite": {
"uri": "/get"
}
}
}'
curl http://localhost:9080/erp/query
这样前端页面组件只需配置 /erp/query
,不需要知道真实 ERP 地址、认证逻辑、限流策略,全部交给网关处理。
docker network create kong-net
docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
postgres:13
docker run -d --name kong \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001" \
-p 8000:8000 \
-p 8001:8001 \
kong:latest
curl -i -X POST http://localhost:8001/services/ -d "name=erp-api" -d "url=http://httpbin.org"
curl -i -X POST http://localhost:8001/services/erp-api/routes -d "paths[]=/erp"
curl -i -X POST http://localhost:8001/services/erp-api/plugins \
--data "name=key-auth"
# 创建消费者
curl -i -X POST http://localhost:8001/consumers/ -d "username=frontend"
# 创建密钥
curl -i -X POST http://localhost:8001/consumers/frontend/key-auth \
-d "key=lowcode-demo-key"
curl --header "apikey: lowcode-demo-key" http://localhost:8000/erp/get
页面组件统一通过 Kong
代理调用 /erp/get
,后端透明代理 + 鉴权完成。
/api/erp/inventory
// 页面组件统一调用 API Gateway 暴露的接口
fetch('/api/erp/inventory', {
headers: { 'apikey': 'lowcode-demo-key' }
}).then(res => res.json()).then(showTable)
/api/ai/summary
/api/ai/summary
,由网关返回固定响应或真实接口结果。Q:API Gateway 是否适合所有低代码平台?
A:适用于中型以上平台或面向外部客户的场景。对小型纯内部系统可以通过轻量封装解决。
Q:低代码平台组件调用是否需要感知鉴权逻辑?
A:不需要。由平台统一封装 fetch/httpClient,由 API Gateway 代理鉴权,组件只感知统一接口路径。
Q:如何处理网关挂掉的问题?
A:建议部署多实例,配合 Nginx/Ingress 做负载均衡。APISIX 和 Kong 都支持高可用部署模式。
API Gateway 不仅能帮低代码平台整合外部 API,更能统一认证、限流、缓存等策略,成为平台底座关键一环。
我们通过 APISIX 和 Kong 分别实现了: