type
status
date
slug
summary
tags
category
icon
password
项目介绍以及需求分析
📝 项目介绍
项目名称(暂定):琉球
背景
- 前端开发需要后台接口
- 使用现成的系统功能,例如一些生成随机头像,背景图的接口
考虑方向
- 防止外部恶意的攻击(网站安全性)
- 防止外部过多的调用(限制,权限)
- 统计调用次数
- API计费
- 流量保护,防止服务器过载
- 接入新API
目的
做一个提供API接口调用的平台,用户可以注册登录,开通接口调用权限。用户可以使用接口,并且调用时会对调用信息进行统计;管理员可以上线、下线、接入接口,以及可视化的接口的实现调用情况和数据。
🧩 项目思路
用户
可以从前台浏览接口、开通接口服务、调用接口、提供接口文档(在线调试)
管理员
可以在后台发布接口、下线接口、配置接口
模拟接口
用于测试、演示
用户管理-保护接口(API网关)
技术:kong、nginx、gateway
- 调用统计
- 计费
- 接口保护
- 鉴权认证
- 授权
- 日志
- 跨域
第三发调用SDK
用户提供给开发者快速搭建本地接口
(此处需要项目系统图)
🤗 开发模块介绍
- 模拟接口
- 后台管理
- 用户前端
- API网关
- SDK
💻 技术选型
前端
- Ant Design Pro
- React
- Ant Design Procomponents
- Umi
- Umi Request
后端
- Spring Boot
- Spring Boot Starter (SDK开发)
- 网关、限流、日志
💼 需求分析
管理员可以对接口信息进行增删改查
用户可以访问前台,查看接口信息
模拟API接口
API签名认证
客户端SDK开发
管理员接口发布与调用
接口文档展示、接口在线调用、测试
预警功能
🔢数据库表设计
可以在鱼皮的项目中快速生成数据库构建代码 地址: http://sqlfather.yupi.icu/ 原先的地址已经更换,不再是sqlfather.com
- id
- name 接口名称
- useId 创建人Id
- description 描述
- url 接口地址
- method请求类型
- requestHeader 请求头
- requestParams 请求参数
- responseHeader 响应头
- status 接口状态: 0 - 关闭, 1 - 开启
- createTime
- updateTime
- isDelete
✍️后端构建
- 采用yupi的后端构建模板,增增改改,实现基础的增删改查。
- 添加接口信息数据表,并实现其增删改查操作
🧩前端构建
- 采用ant design pro脚手架直接构建
- 使用openapi插件自动生成api接口
直接将后端支持openapi的文档(在config.ts文件中配置openapi的地址)交给前端,直接生成。 生成方式:运行package.json中的openapi的指令,自动会生成后端的接口文件。
📚知识点汇总
- 设置后端请求地址:在
api.tsx
中配置request
时添加baseUrl
参量,参量的值为后端接口路径。
- 解决Cookie不保存问题:依旧在
request
中添加参量withCredentials
设置为true
。
- 修改
request
请求方法的参量时,一定要按照request
的参量表来写,可以将其复制到目标出,逐一编写
- 注意前端的接口方法都要改成
openai
生成的接口方法。
- 全局
InitialState
配置,在typings.d.ts
文件下设置,用于保存全局的用户登录信息。
❓问题
前端每当重启时,第一次登录需要登录两次才能跳转,查看后端发现,第一次登录时,getInitial方法再Login方法之前就调用了。很怪,第一次之后就不会在出现了。
为什么只有项目重启之后的第一次会有需要两次登录的bug
🔑问题解决
- 问题产生的原因是Login之后的setInitial方法是异步方法,因此更改全局登录态的时候会慢一步,解决方法是在login之后的页面跳转方法上添加延迟(setTimeout方法),可以解决问题。但是还有问题,为什么只有每次项目启动的第一次会出现这种情况(待解决)。
- 应该是浏览器缓存
有关该项目开发请留言,多来点star吧❤️❤️❤️
- Author:灵檠
- URL:https://blog.ly-qing.lol/article/09ad0240-c804-47e8-a77c-1884c40bbd1d
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts