# fastapi
**Repository Path**: npeng/fastapi
## Basic Information
- **Project Name**: fastapi
- **Description**: java接口管理平台
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 79
- **Created**: 2025-07-22
- **Last Updated**: 2025-07-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
fastapi v2.0.0
## 平台目标
> 1. 通过对接口的统一管理、统一配置、统一调用,来满足公司日益变化的接口需求
> 2. 通过配置,实现零开发,零发布,零运维,从而让开发人员多一些快乐,少一些加班
## 平台架构
> 本平台基于ruoyi 3.8.2进行开发
> 前端采用Vue、Element UI。
> 后端采用Spring Boot、Spring Security、Redis & Jwt。
## 操作文档
### 基础配置
#### 数据源配置
mysql连接url
```
mysql连接url: jdbc:mysql://xxx:3306/xxx?characterEncoding=utf8&useUnicode=true&useSSL=false&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&allowPublicKeyRetrieval=true
```
oracle连接url
```
oracle连接url: jdbc:oracle:thin:@xxx:1521/orcl
```
postgresql连接url
```
oracle连接url: jdbc:postgresql://xxx:5432/xxx
```
sqlserver连接url
```
sqlserver连接url: jdbc:sqlserver://xxx:1433;DatabaseName=xxx
```
> 如果你需要检查数据库连接,可点击一键自检对数据库健康度进行检查
> oracle jar需要自己手动添加至maven
#### 应用管理
> 为了方便管理,一个大屏页面为一个应用
### 接口配置
> 查询接口配置
1. 根据sql语句结果,配置相对应的结果类型
2. 根据业务和实际接口请求时长,决定是否开启缓存
3. 接口描述最好填写,方便日后进行维护(最好直接为页面指标项)
### 参数传递
1. get请求直接在url中拼接数据即可
2. post请求在body中以json方式传参,在配置sql中可变参数以 [\`user_name={userName}\`]此形式进行配置
如:select * from sys_user where [\`user_name={userName}\`]当前台传入userName语句时会自动拼接上[]中的语句**
3. 模糊查询用法select * from sys_user where [\`user_name like %{userName}%\`]
> 中文只支持post请求
> oracle jar需要自己手动添加至maven参考中
### 接口调用
```
{ip}:{端口}/reverse/{应用前缀}/{接口名称}
```
### 接口合并调用
> 目前通过接口平台进行配置后,每一个接口为一个单独指标项,这就意味着前端在进行调用时
> 需要调用大量的后台接口,所以为了前端调用遍历,故有了此功能
> 接口进行合并调用时需要注意,只能是同一个应用下的接口才能够进行合并调用,且同时最多合并五个接口
```
{ip}:{端口}/reverse/{应用前缀}/{接口名称1},{接口名称2},{接口名称3}...
```
### 接口权限控制
> 接口平台目前支持登录调用/密钥调用/系统调用(定时任务)/开放调用四种权限控制
> 可通过系统管理->参数设置,进行灵活的权限配置
#### 登录调用
head中必须带有系统用户的token才能进行调用,当不填写authType时,默认为登陆调用
```
head
Authorization:Bearer xxx
authType:authToken
```
#### 密钥调用
接口平台支持第三方系统,使用密钥进行调用,调用前对接口进行授权
```
head
authType:authCode
clientId:xxx
clientSecret:xxx
```
#### 系统调用
由内部系统定时任务发起的数据落地操作
#### 开放调用
接口平台不进行权限控制,只需将系统管理->参数设置->开启登录校验设置为off即可
### 接口服务
> 接口平台提供第三方应用,以密钥方式进行对接,可单独对每个应用进行细粒度接口权限控制
#### 应用管理
> 创建第三方应用,同时用于管理员进行授权操作
#### 调用历史
> 记录接口调用历史,可在(参数设置->调用历史-开启调用历史)中设置开启或关闭
### 接口数据落地
> 在ScheduleTask类中,给出了数据落地的调用方法,根据实际情况进行开发即可
### 数据转换
#### kv转换
内容格式:
```
{"name":"返回字段名称","value":"返回字段名称"}
```
返回格式:
```
{
"msg": "操作成功",
"code": 200,
"data": {
"result": [
{
"name": 202110,
"value": 1078085
},
{
"name": 202111,
"value": 1136770
}
]
}
}
```
#### 行列转换
内容格式:
```
{"name":"返回字段名称","value":"返回字段名称"}
```
返回格式:
```
{
"msg": "操作成功",
"code": 200,
"data": {
"result": {
"202112": 1238529,
"202201": 1202956
}
}
}
```
#### key提取
内容格式:
```
{"key":"返回字段名称"}
```
返回格式:
```
{
"msg": "操作成功",
"code": 200,
"data": {
"result": [
{
"202110": {
"VAL": 1078085,
"MONTH": 202110,
"CANTCODE": "370000",
"CANTNAME": "山东省"
}
},
{
"202111": {
"VAL": 1136770,
"MONTH": 202111,
"CANTCODE": "370000",
"CANTNAME": "山东省"
}
}
]
}
}
```
## 演示图
## 捐献支持