# 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) --- ![效果](https://images.gitee.com/uploads/images/2022/0305/000104_a2274543_2103716.png "效果") ### 1、修改连接字符串 ![修改连接字符串](https://images.gitee.com/uploads/images/2022/0304/162711_fa1d1668_2103716.png "修改连接字符串") ### 2、数据表说明 - **应用账号 App_Account** :AppId&AppSecret登录获取Token - **Token灰名单 App_TokenGrey** :拦截异常的Token ![数据表](https://images.gitee.com/uploads/images/2022/0304/162923_31d36e9a_2103716.png "数据表") ### 3、更新实体到数据库 - Generic.App.HttpApi.Host设置为启动项目 - Generic.App.EntityFrameworkCore设置为PMC的默认项目 - PMC窗口执行update-database ![更新实体到数据库](https://images.gitee.com/uploads/images/2022/0304/162824_763e4243_2103716.png "更新实体到数据库") ### 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 则为未授权) ![未授权](https://images.gitee.com/uploads/images/2022/0305/002842_7b4b3781_2103716.png "未授权") ### 6、Token过期说明 (1)Token有效期 - 默认为30分钟 ![Token有效期](https://images.gitee.com/uploads/images/2022/0305/003415_ef105b25_2103716.png "Token有效期") - appsettings.json修改默认值 ![修改默认token过期时间](https://images.gitee.com/uploads/images/2022/0305/003530_dd98c3d7_2103716.png "修改默认token过期时间") (2)刷新Token - 定期刷新Token:基于请求头Authorization的Token进行刷新 ![刷新Token](https://images.gitee.com/uploads/images/2022/0305/003704_da3bc8a1_2103716.png "刷新Token") - 刷新逻辑:小于最小过期时间的生产新的Token,否则返回当前的Token&剩余时间 ![刷新逻辑](https://images.gitee.com/uploads/images/2022/0305/004445_2a6d27e4_2103716.png "刷新逻辑")