# integral-api **Repository Path**: Selfequipment/integral-api ## Basic Information - **Project Name**: integral-api - **Description**: 积分项目 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-07 - **Last Updated**: 2025-08-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SpringBoot 3高并发API项目 基于SpringBoot 3.2.0和JDK 17开发的高并发API项目,实现了消息推送的处理,包含AOP日志记录、MD5签名验证等功能。 ## 技术栈 - Java 17 - Spring Boot 3.2.0 - MyBatis Plus 3.5.4.1 - MySQL 8.0 - HikariCP 连接池 - AOP 切面日志 - 签名验证拦截器 ## 主要功能 1. **高并发处理**:采用多线程和线程池进行处理,提高并发能力 2. **日志切面**:通过AOP实现请求日志记录 3. **接口鉴权**:基于MD5的接口签名验证 4. **接口白名单**:支持配置不需要签名验证的接口路径 ## 项目结构 ``` springboot-api-project/ ├── src/main/java/com/example/apiproject/ │ ├── aspect/ // AOP切面 │ ├── common/ // 公共类 │ ├── config/ // 配置类 │ ├── controller/ // 控制器 │ ├── entity/ // 实体类 │ ├── interceptor/ // 拦截器 │ ├── mapper/ // MyBatis Mapper │ ├── service/ // 服务类 │ │ └── impl/ // 服务实现类 │ └── util/ // 工具类 ├── src/main/resources/ │ ├── mapper/ // MyBatis XML映射文件 │ ├── db/ // 数据库脚本 │ └── application.yml // 应用配置文件 └── pom.xml // Maven配置文件 ``` ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.6+ - MySQL 8.0+ ### 构建运行 1. 创建数据库 ```sql CREATE DATABASE api_project DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` 2. 执行SQL脚本 执行`src/main/resources/db/schema.sql`文件创建表结构。 3. 修改数据库配置 修改`application.yml`中的数据库连接信息。 4. 构建运行 ```bash cd springboot-api-project mvn clean package java -jar target/apiproject-0.0.1-SNAPSHOT.jar ``` ## 接口说明 ### 白名单接口(无需签名) - 健康检查: `GET /api/health` - 登录: `POST /api/auth/login` - 注册: `POST /api/auth/register` ### 需要签名的接口 - 创建消息: `POST /api/messages` - 批量创建消息: `POST /api/messages/batch` - 获取消息列表: `GET /api/messages` - 获取单个消息: `GET /api/messages/{id}` - 处理消息: `PUT /api/messages/process/{id}` ## 签名验证 签名参数需要在HTTP头中传递: - `X-Timestamp`: 时间戳(毫秒) - `X-Nonce`: 随机字符串 - `X-Sign`: 签名字符串 签名算法: 1. 收集参数(timestamp、nonce、path) 2. 按参数名ASCII码升序排序 3. 拼接参数名=参数值形式,用&连接 4. 拼接key=密钥 5. 对拼接后的字符串进行MD5加密,转大写 示例: ``` timestamp=1628156189000&nonce=abcdef123456&path=/api/messages&key=7ca35fbae11c4fa5a4326bfc6f3403be ``` MD5加密后:`A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6`