# Generic-Api
**Repository Path**: fearless87/generic-api
## Basic Information
- **Project Name**: Generic-Api
- **Description**: 一个开箱即用的应用API模板(直接基于此二次开发),采用现代化架构(.net6、abp、DDD、微服务思想等),包括JWT Token认证(含灰名单)、异常拦截、日志处理、Redis缓存、调试自动登录等
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 1
- **Created**: 2022-03-04
- **Last Updated**: 2025-08-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: net架构, api架构, DDD项目, 通用API, 微服务
## README
# Generic-Api项目
一个开箱即用的应用API模板(直接基于此二次开发),采用现代化架构(.net6、abp、DDD、微服务思想等),包括JWT Token认证(含灰名单)、异常拦截、日志处理、Redis缓存、调试自动登录等
## 基础使用
* [修改连接字符串](#1.1)
* [数据表说明](#1.2)
* [更新实体到数据库](#1.3)
* [运行](#1.4)
* [返回结果约定](#1.5)
* [Token过期说明](#1.6)
---

### 1、修改连接字符串

### 2、数据表说明
- **应用账号 App_Account** :AppId&AppSecret登录获取Token
- **Token灰名单 App_TokenGrey** :拦截异常的Token

### 3、更新实体到数据库
- Generic.App.HttpApi.Host设置为启动项目
- Generic.App.EntityFrameworkCore设置为PMC的默认项目
- PMC窗口执行update-database

### 4、运行
(1)进入Swagger,输入保护密码 **@Admin**
(2)默认开启了自动授权:AppId置空则关闭自动登录
(3)生成Token:采用默认 **账号Test密码123456** (种子数据)
(4)Swagger授权
(5)加入灰名单:过了灰名单的缓存时间再采用此Token访问将被拦截
### 5、返回结果约定
(1)基本格式
```
{
"code": "200000",
"message": "",
"data": {
}
}
```
- code:结果码,有如下定义
```
public enum CustomResultCode
{
Api请求成功 = 200000,
请求参数错误 = 400000,
用户未登录 = 400001,
请求重复提交 = 400002,
无操作权限 = 400003,
数据不存在 = 400004,
请求无效 = 400005,
系统异常 = 500000
}
```
- message:错误消息
- data:数据内容
(2)未授权
- 通过Http状态码判断(401 则为未授权)

### 6、Token过期说明
(1)Token有效期
- 默认为30分钟

- appsettings.json修改默认值

(2)刷新Token
- 定期刷新Token:基于请求头Authorization的Token进行刷新

- 刷新逻辑:小于最小过期时间的生产新的Token,否则返回当前的Token&剩余时间
