avatar
文章
43
标签
22
分类
12

主页
博文
  • 分类
  • 标签
  • 归档
关于笔者
墨枫个人博客
搜索
主页
博文
  • 分类
  • 标签
  • 归档
关于笔者
七、API 接口分析功能
发表于2023-01-12|API 开放平台
七、API 接口分析功能主要内容: 开发抽象公共服务 实现网关核心业务流程 开发管理员接口分析功能 上线分析和发展 梳理网关业务流程一下操作可以复用: 实际情况应该是去数据库中查询是否已分配给用户秘钥(accessKey, secretKey 是否合法) 先根据 accessKey 判断用户是否存在,查到 secretKey 对比 secretKey 和用户传的加密后的 secretKey 是否一致 从数据库中查询模拟接口是否存在,以及请求方法是否匹配(还可以校验参数) 调用成功,接口调用次数 + 1 invokeCount 临时问题:如何获取接口转发服务器的地址思路:网关启动时,获取所有的接口信息,维护到内存的 hashmap 中;有请求时,根据请求的 URL 路径或其他参数(比如 host 请求头) 来判断应该转发到哪台服务器、以及用户校验接口是否存在 抽象公共服务项目名:mofeng-common 目的是让方法、实体类在多个项目之间复用,提高代码复用率。 服务抽取: 数据库中查询是否已分配给用户秘钥(根据 accessKey, 拿到用户信息,返回用户信息,为空表示不 ...
六、Dubbo 框架
发表于2023-01-03|API 开放平台
六、Dubbo 框架网关业务逻辑问题:网关项目比较纯净,没有操作数据库的包、并且还要调用我们之前写过的代码?复制粘贴维护麻烦 解决:直接请求到其他项目的方法 如何调用其他项目的方法 复制代码、依赖和环境 HTTP 请求(提供一个接口,供其他项目使用) RPC 把公共的代码打包 JAR 包,其他项目引用(客户端 SDK) HTTP 请求如何调用? 提供开发一个接口(地址、请求方法、参数、返回值) 调用方使用 HTTP Client 之类的代码包去发送 HTTP 请求 RPC作用:像本地方法一样调用远程方法 对开发者更透明,减少了很多的沟通 成本 RPC 想远程服务器发送请求时,未必要使用 HTTP 请求,比如还可以用 TCP/IP,性能更高(内部服务更适用) Dubbo 框架(RPC 实现)GRPC、TRPC 阅读官方文档:https://cn.dubbo.apache.org/zh/docs3-v2/java-sdk/quick-start/spring-boot/ 两种使用方式: Spring Boot 代码(注解 + 编程式):写 Java 接口,服务提供者和 ...
三、API 开放平台-接口发布
发表于2022-12-22|API 开放平台
三、接口发布-下线-调用 开发接口发布、下线的功能(管理员) 前端去浏览接口、查看接口文档、申请签名(注册) 在线调试(用户) 统计用户调用接口的次数 优化系统 - API 网关 开发接口发布/下线功能后台接口: 发布接口(仅管理员可操作) 校验该接口是否存在 判断该接口是否可以调用 修改接口数据库中的状态字段为 1 下线接口(仅管理员可操作) 校验接口是否存在 修改接口数据库中的状态字段为 0 查看接口文档动态路由,用 url 来传递 id, 加载不同的接口信息 申请签名用户在注册成功时,自动分配 accessKey、secretKey 扩展点:用户可以申请更换签名 在线调用123[ {"name":"username", "type":"string"}] 先跑通整个接口流程,再去针对不同的请求头或者接口类型来设计界面和表单,给用户更好的体验。(可以参考 swagger、postman、knife4j) 调用流程 流程: 前端将用户输入的请求参数和要测 ...
API 开放平台设计
发表于2022-12-22|API 开放平台
API 开放平台第一期项目背景: 前端开发需要用到后端接口 使用现成的系统的功能(http://api.btstu.cn/) API 接口平台: 防止攻击(安全性) 不能随便调用(限制、开通) 统计调用次数 计费 流量保护 API 接口 项目介绍做一个提供 API 接口调用的平台,用户可以注册登录,开通接口调用权限,用户可以使用接口,并且每次调用会进行统计。管理员可以发布接口、下线接口、接入接口,以及可视化接口的调用情况、数据。 技术选型前端 Ant Design Pro React Ant Design Procompoments Umi Umi Request (Axios 的封装) 后端 Java Spring Boot Sring Boot Starter (SDK 开发) 项目计划第一期 —- 初始化展示项目介绍、设计、技术选型 基础项目搭建 接口管理 用户查看接口 第二期 —- 接口调用 继续开发接口管理前端页面 开发调用这个接口的代码 保证调用的安全性(API 签名认证) 客户端 SDK 的开发 管理员接口 发布 与调用 接口文档展示、接口在线调用 第三期 ...
API 开放平台四-网关
发表于2022-12-22|API 开放平台
四、网关 开发接口调用次数的设计 优化整个系统的架构(API 网关) 网关是什么? 网关的作用 网关的应用场景及实现 结合业务应用网关 接口调用次数统计需求: 用户每次调用接口成功,次数 + 1 给用户分配或者用户自主申请接口调用次数 业务流程: 用户调用接口 修改数据库,调用次数 + 1 设计库表: 哪个用户?哪个接口? 用户 => 接口 (多对多关系) 用户调用接口关系表: 12345678910111213-- 用户调用接口关系表create table if not exists user_interface_info( id bigint auto_increment comment 'id' primary key, userId bigint comment '调用用户 id', interfaceInfoId bigint comment '接口 id', totalNum int d ...
二、API 开放平台-模拟接口
发表于2022-12-22|API 开放平台
二、API 开放平台-模拟接口模拟接口项目 mofeng-interface提供三个模拟接口 GET 接口 POST 接口(URL 传参) POST 接口 (Restful) 调用接口几种 HTTP 调用方式: HttpClient RestTemplate 第三方库(OKHTTP、Hutool) Hutool:https://hutool.cn/docs/#/ Http 工具类:https://hutool.cn/docs/#/http/Http%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%B7%A5%E5%85%B7%E7%B1%BB-HttpUtil API 签名认证本质: 签名签发 使用签名(校验签名) 为什么需要签名认证? 保证安全性,防止恶意调用 如何实现 API 签名认证呢?通过 http request header 头传递参数 参数1: accessKey 调用的标识 userA, userB (复杂、无序、无规律) 参数2: secretKey 密钥 (复杂、无序、无规律),该参数不能放在请求头中 类似于用户名和密码,区别:acces ...
创建 starter 步骤
发表于2022-12-22|API 开放平台
创建starter步骤1.新建一个 spring boot 初始化项目 2.添加依赖,Lombok, Spring Configuration Processor Spring Configuration Processor 的作用是自动生成代码提示 3.修改 pom 文件的版本号,并删除 build ​ 4.删除原本自动创建的主类,新建一个类, 并添加需要用到的依赖 5.在 resources 目录下新建 META-INF 目录,并创建 spring.factories 文件,并指定配置类的目录 6.install 打包构建在本地的仓库 7.复制 groupId, artifactId, version,可以在其他项目中添加为依赖 8.在配置文件当中就可以引用 starter 当中设置的属性 刚才在 starter 配置类中定义的属性 可以引入 starter 当中的类或者属性
GateWay 转发请求
发表于2022-12-22|API 开放平台
五、Gateway 转发请求使用到的特性 路由 负载均衡(需要用到注册中心) 统一鉴权 跨域 统一业务处理(缓存) 访问控制 发布控制 流量染色 接口保护 限制请求 信息脱敏 降级(熔断) 限流:学习令牌桶算法、学习漏桶算法,学习一下 RedisLimitHandler 超时时间 统一日志 统一文档 业务逻辑 用户发送请求到 API 网关 请求日志 (黑白名单) 用户鉴权(判断 accessKey, secretKey 是否合法) 请求的模拟接口是否存在 请求转发,调用模拟接口 响应日志 调用成功,次数 + 1 调用失败,返回一个规范的错误码 具体实现1.请求转发使用前缀匹配断言:https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#the-path-route-predicate-factory 所有路径为: /api/** 的请求进行转发,转发到 http://localhost:8123/api/** 比如请求网关: http://localhost:8090/ ...
组队功能设计
发表于2022-12-08|伙伴匹配系统
组队功能应用场景需要跟自己一起参加竞赛、做项目、学习,可以发起队伍或者加入别人的队伍 需求分析 用户可以创建队伍,设置队伍的人数、队伍名称(标题)、描述、超时时间 P0队长、剩余的人数 聊天 公开或私密或加密 用户最多创建 5 个队伍 展示队伍列表,根据名称搜索队伍 P0,信息流中不展示已过期的队伍 修改队伍信息 P0~P1 用户可以加入队伍(其他人、未满人、未过期),允许加入多个队伍,但是有上限 P0 是否需要队长同意?筛选审批? 用户可以退出队伍(如果队长退出,权限转移给第二早加入的用户 – 先来先到)P1 队长可以解散队伍 P0 分享队伍 => 邀请其他用户加入队伍 P1 业务流程:(1)生成分享连接(分享二维码)(2)用户访问链接,可以点击加入 系统(接口)设计1.创建队伍用户可以创建队伍,设置队伍的人数、队伍名称(标题)、描述、超时时间 P0队长、剩余的人数 聊天 公开或私密或加密 用户最多创建 5 个队伍 请求参数是否为空 是否登录,为登录不允许创建 校验信息a. 队伍人数 > 1 且 <= 20b. 队伍 ...
数据库表设计
发表于2022-12-08|伙伴匹配系统数据库
数据库表设计队伍表 team字段: id 主键 bigint (最简单、连续,放 URL 上比较简短,但缺点是爬虫) name 队伍名称 decription 描述 maxNum 最大人数 expireTime 过期时间 userId 创建人 status 0 - 公开, 1- 私密, 2 - 加密 password 队伍密码 createTime 创建时间 updateTime 更新时间 isDelete 是否删除 用户-队伍表 user_team关系: 用户加入了哪些队伍? 队伍有哪些用户? 两种实现方式: 建立用户-队伍关系表 teamId userId (便于修改,查询性能高一点,不用全表遍历) 用户表补充已加入的队伍字段,队伍表补充已加入的用户字段(便于查询,不用写多对多连表查询代码,可以直接根据队伍查用户、根据用户查队伍) 字段: id 主键 userId 用户 id teamId 队伍 id joinTime 加入时间 createTime 创建时间 updateTime 更新时间 isDelete 是否删除 为什么需要请求参数包装类? 请求参数名称 &# ...
123…5
avatar
墨枫
墨枫个人笔记总结与分享
文章
43
标签
22
分类
12
Follow Me
最新文章
若依框架使用教程
若依框架使用教程2023-08-07
若依生成代码
若依生成代码2023-08-07
若依整合 ECharts
若依整合 ECharts2023-08-07
读《今日摄影》
读《今日摄影》2023-06-28
一、聚合搜索平台简介
一、聚合搜索平台简介2023-05-03
分类
  • API 开放平台8
  • git1
  • 伙伴匹配系统11
    • redis1
    • 数据库1
  • 墨枫的读书感想2
  • 开源组件2
  • 数据库8
标签
ECharts EasyExcel GitHub JSON Mybatis RabbitMQ SQL Session bug redis spring注解 分布式 定时任务 开源项目 数据库 星球项目 算法 索引 读书感想 跨域 锁 项目上线
归档
  • 八月 20233
  • 六月 20231
  • 五月 20234
  • 四月 20231
  • 二月 20231
  • 一月 20232
  • 十二月 202229
  • 十一月 20222
网站资讯
文章数目 :
43
本站访客数 :
本站总访问量 :
最后更新时间 :
©2022 - 2024 By 墨枫
框架 Hexo|主题 Butterfly
桂ICP备2022010811号-1
搜索
数据库加载中