# 公开接口文档 本文档详细说明所有无需认证即可访问的 API 接口。 ## 目录 - [GET /health - 健康检查](#get-health) - [GET /info - 服务器信息](#get-info) - [POST /auth/register - 用户注册](#post-authregister) - [POST /auth/login - 用户登录](#post-authlogin) - [POST /auth/refresh - 刷新 Token](#post-authrefresh) --- ## GET /health 健康检查端点,用于检查服务是否正常运行。 ### 请求 ```http GET /health ``` **请求参数**:无 **请求头**:无特殊要求 ### 响应 **成功响应 (200)**: ```json { "status": "ok" } ``` 或服务不可用时: ```json { "status": "unavailable" } ``` ### 示例 ```bash curl http://localhost:3000/health ``` ### 错误码 | 错误码 | 说明 | |-------|------| | 500 | 服务器内部错误 | --- ## GET /info 获取服务器基本信息,包括应用名称、版本、状态等。 ### 请求 ```http GET /info ``` **请求参数**:无 **请求头**:无特殊要求 ### 响应 **成功响应 (200)**: ```json { "name": "web-rust-template", "version": "0.1.0", "status": "running", "timestamp": 1704112800 } ``` ### 字段说明 | 字段 | 类型 | 说明 | |------|------|------| | name | string | 应用名称 | | version | string | 应用版本 | | status | string | 运行状态 | | timestamp | number | 当前时间戳(Unix 时间戳) | ### 示例 ```bash curl http://localhost:3000/info ``` ### 错误码 | 错误码 | 说明 | |-------|------| | 500 | 服务器内部错误 | --- ## POST /auth/register 创建新用户账户。注册成功后自动登录,返回 Access Token 和 Refresh Token。 ### 请求 ```http POST /auth/register Content-Type: application/json ``` **请求参数**: ```json { "email": "user@example.com", "password": "password123" } ``` ### 字段说明 | 字段 | 类型 | 必填 | 说明 | |------|------|------|------| | email | string | 是 | 用户邮箱,必须是有效的邮箱格式 | | password | string | 是 | 用户密码,建议长度至少 8 位 | ### 响应 **成功响应 (200)**: ```json { "code": 200, "message": "Success", "data": { "email": "user@example.com", "created_at": "2026-02-13T12:00:00.000Z", "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } } ``` ### 响应字段说明 | 字段 | 类型 | 说明 | |------|------|------| | email | string | 用户邮箱 | | created_at | string | 账号创建时间(ISO 8601 格式) | | access_token | string | Access Token,有效期 15 分钟 | | refresh_token | string | Refresh Token,有效期 7 天 | ### 示例 ```bash curl -X POST http://localhost:3000/auth/register \ -H "Content-Type: application/json" \ -d '{ "email": "user@example.com", "password": "password123" }' ``` ### 错误码 | 错误码 | 说明 | |-------|------| | 400 | 请求参数错误(邮箱格式错误、密码长度不够) | | 409 | 邮箱已被注册 | | 500 | 服务器内部错误 | ### 注意事项 - 邮箱地址将作为用户的唯一标识符 - 密码会使用 Argon2 算法进行哈希存储 - 注册成功后会自动生成 Access Token 和 Refresh Token - Refresh Token 会存储在 Redis 中,用于后续刷新 Token --- ## POST /auth/login 用户登录。验证成功后返回 Access Token 和 Refresh Token。 ### 请求 ```http POST /auth/login Content-Type: application/json ``` **请求参数**: ```json { "email": "user@example.com", "password": "password123" } ``` ### 字段说明 | 字段 | 类型 | 必填 | 说明 | |------|------|------|------| | email | string | 是 | 用户邮箱 | | password | string | 是 | 用户密码 | ### 响应 **成功响应 (200)**: ```json { "code": 200, "message": "Success", "data": { "id": "1234567890", "email": "user@example.com", "created_at": "2026-02-13T12:00:00.000Z", "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } } ``` ### 响应字段说明 | 字段 | 类型 | 说明 | |------|------|------| | id | string | 用户 ID(10 位数字) | | email | string | 用户邮箱 | | created_at | string | 账号创建时间(ISO 8601 格式) | | access_token | string | Access Token,有效期 15 分钟 | | refresh_token | string | Refresh Token,有效期 7 天 | ### 示例 ```bash curl -X POST http://localhost:3000/auth/login \ -H "Content-Type: application/json" \ -d '{ "email": "user@example.com", "password": "password123" }' ``` ### 错误码 | 错误码 | 说明 | |-------|------| | 400 | 请求参数错误 | | 401 | 邮箱或密码错误 | | 500 | 服务器内部错误 | ### 注意事项 - 登录失败不会返回具体的错误信息(如"邮箱不存在"或"密码错误"),统一返回"邮箱或密码错误" - 密码错误次数过多可能会被临时限制(取决于具体实现) - 登录成功后会生成新的 Token 对,旧的 Token 会失效 --- ## POST /auth/refresh 使用 Refresh Token 获取新的 Access Token 和 Refresh Token。 ### 请求 ```http POST /auth/refresh Content-Type: application/json ``` **请求参数**: ```json { "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } ``` ### 字段说明 | 字段 | 类型 | 必填 | 说明 | |------|------|------|------| | refresh_token | string | 是 | Refresh Token | ### 响应 **成功响应 (200)**: ```json { "code": 200, "message": "Success", "data": { "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } } ``` ### 响应字段说明 | 字段 | 类型 | 说明 | |------|------|------| | access_token | string | 新的 Access Token,有效期 15 分钟 | | refresh_token | string | 新的 Refresh Token,有效期 7 天 | ### 示例 ```bash curl -X POST http://localhost:3000/auth/refresh \ -H "Content-Type: application/json" \ -d '{ "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }' ``` ### 错误码 | 错误码 | 说明 | |-------|------| | 400 | 请求参数错误 | | 401 | Refresh Token 无效或已过期 | | 500 | 服务器内部错误 | ### 注意事项 - 每次刷新会生成新的 Refresh Token,旧的 Refresh Token 会立即失效 - Refresh Token 只能使用一次,重复使用会返回错误 - Refresh Token 有效期为 7 天,过期后需要重新登录 - Refresh Token 存储在 Redis 中,服务器重启不会丢失(如果 Redis 持久化配置正确) ### Token 刷新策略建议 **前端实现建议**: 1. 在每次 API 请求失败(401 错误)时尝试刷新 Token 2. 刷新成功后重试原请求 3. 刷新失败则跳转到登录页 4. 不要在 Token 即将过期时主动刷新,而是在使用时检查有效性 查看 [前端集成示例](../examples/frontend-integration.md) 了解完整的实现代码。 --- ## 相关文档 - [受保护接口文档](protected.md) - 需要认证的接口说明 - [认证机制详解](../authentication.md) - 完整的认证流程说明 - [API 概览](../api-overview.md) - 所有接口快速索引 - [前端集成示例](../examples/frontend-integration.md) - 前端集成代码示例 --- **提示**:建议使用 Postman、Insomnia 或类似工具测试 API 接口。