- 前端开发需要用到的后台接口
- 使用现成的系统的功能(
http://api.btstu.cn)
做一个API接口平台:
- 防止攻击(安全性)
- 不能随便调用(限制,开通账号)
- 统计调用次数
- 计费
- 流量保护
- API接入
做一个提供API接口调用的平台,用户可以注册登录, 开通接口调用权限, 用户可以使用接口, 并且每次调用会进行统计。管理员可以发布接口、下线接口、接入接口,以及可视化接口的调用情况、数据。
前端: 前端代码库: open-api-playground
后端: 后端代码库: open-api-controller
React
Antd Pro
Umi
Java Springboot3
Springboot Starter(SDK开发)
Spring Cloud Gateway(网关)
Dubbo(RPC框架)
基础项目搭建(✔)
接口管理(✔)
用户查看接口(✔)
用户管理(✔)
角色管理(✔)
权限管理(✔)
分布式登录()
权限控制(✔)
发布接口 (✔)
-
校验接口是否存在 (✔)
-
校验接口是否可用 (✔)
-
将接口状态改为1 (✔)
下线接口(✔)
-
校验接口是否存在(✔)
-
将接口状态改为0(✔)
接口调用(✔)
接口文档展示(✔)
接口在线调用(目前固定方法名调用)(✔)
保证调用的安全性(API签名认证)(✔)
API签名认证的校验(✔)
客户端SDK的开发(✔)
统计用户调用次数(✔)
给用户分配或者用户自主申请接口调用次数(✔)
优化整个系统架构(API网关)(✔)
- 路由(转发请求到模拟接口)(✔)
- 统一鉴权(secretId, secretKey)(✔)
- 统一跨域(✔)
- 缓存
- 流量染色(记录请求是否来源于网关)
- 访问控制(黑白名单)(✔)
- 统一业务处理(✔)
发布控制脱敏负载均衡- 接口保护
- 限制请求
- 脱敏
- 降级(熔断)
限流- 超时时间
- 统一日志(记录每次的请求和响应日志)(✔)
统一文档
业务逻辑:
- 用户发送请求到API网关(✔)
- 请求日志记录(✔)
- 用户鉴权(需要用到RPC)(✔)
- 请求的模拟接口是否存在(需要用到RPC)(✔)
- 请求转发,调用模拟接口(✔)
- 调用成功,接口调用次数 + 1(需要用到RPC)(✔)
- 调用失败,返回一个规范的错误码(✔)
- 响应日志(✔)
限流
计费
网关需要查询数据库的部分数据,需要从其他微服务中调用对应的方法,因此使用Dubbo的RPC框架 整合Dubbo RPC框架
-
backend项目作为项目提供者
- 提供查询用户的密钥Id的接口实现方法(✔)
- 提供统计次数的接口实现方法(✔)
-
怎么让其他用户上传接口?
- 需要提供一个机制(页面), 让用户输入自己的接口host(服务器地址)、接口信息、遵循要求(SDK), 在接入时,平台需要测试调用这个接口,保证正常使用
- 在接口信息表里添加host字段,区分服务器地址
提供可视化平台,用图表方式展示所有接口调用情况,
- 前端框架:(echarts for react) https://github.com/hustcc/echarts-for-react
分析: 1. 各个接口调用接口的次数占比(饼图) 2.
假设: 调用的少的可以免费, 调用的多的可涨价
拓展:
- 开发管理员分析功能(后置的需求)
-
用户的增删改查
-
API接口的增删改查
-
用户角色管理、角色权限管理、权限校验
-
API接口的发布与下线
-
API接口在线调用与文档展示
-
API签名认证校验
-
客户端SDK开发,简化API调用代码
-
给用户分配API资源
-
Gateway统一鉴权、统一跨域、统一日志管理、访问控制
-
接口固定方法名改为根据API地址来动态调用
-
完成部署
-
nacos配置管理
-
账号单点登录
-
RocketMQ | Kafka
-
限流算法(请求频率)
-
降级熔断
-
超时时间
-
sdk测试url与调用url不同
-
怎么让其他用户上传接口
前端: 后端:
- backend项目:web项目, 部署springboot的jar包(对外)
- gateway项目:web项目, 部署springboot的jar包(对外)
- interface接口项目:web项目, 部署springboot的jar包(内部)
使用nginx部署: 44300
使用vercel快速部署。 https://vercel.com/
-
确定部署后的端口分配 gateway:44388 backend: 44380 interface: 44389
-
nacos2.0.4部署:
https://blog.csdn.net/ilvjiale/article/details/129417768docker安装:
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nacos/nacos-server:v2.0.4 -
java环境:
https://www.cnblogs.com/chaosmoor/p/15897693.html -
nginx:
https://www.cnblogs.com/orangebooks/p/12058830.html -
redis:
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:5.0.14 -
RocketMQ:
https://rocketmq.apache.org/docs/quickStart/02quickstartWithDocker


