ahserver/aidocs/error.md
2025-10-05 12:07:12 +08:00

197 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# API 响应工具函数技术文档
本文档描述了一组用于生成标准化 API 响应的 Python 函数。这些函数旨在统一后端接口返回的数据格式,提升前后端交互的一致性和可维护性。
---
## 目录
- [简介](#简介)
- [函数说明](#函数说明)
- [`Error(errno, msg)`](#errorerrno-msg)
- [`Success(data)`](#successdata)
- [`NeedLogin(path)`](#needloginpath)
- [`NoPermission(path)`](#nopermissionpath)
- [响应结构规范](#响应结构规范)
- [使用示例](#使用示例)
---
## 简介
该模块提供四个辅助函数,用于快速构造具有统一结构的 JSON 响应对象。适用于 Web API 开发中常见的成功、错误、登录验证和权限控制场景。
所有函数返回标准字典结构,可直接序列化为 JSON 并返回给客户端。
---
## 函数说明
### `Error(errno, msg)`
生成表示错误响应的标准结构。
#### 参数
| 参数名 | 类型 | 默认值 | 说明 |
|--------|------|--------|------|
| `errno` | `str` | `'undefined error'` | 错误代码或标识符,用于区分不同类型的错误 |
| `msg` | `str` | `'Error'` | 用户可读的错误消息 |
#### 返回值
```json
{
"status": "Error",
"data": {
"message": "错误信息",
"errno": "错误编号"
}
}
```
#### 示例
```python
Error("404", "资源未找到")
# 返回:
# {
# "status": "Error",
# "data": {
# "message": "资源未找到",
# "errno": "404"
# }
# }
```
---
### `Success(data)`
生成表示操作成功的响应。
#### 参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| `data` | `any` | 实际返回的数据内容(可以是字典、列表、字符串等) |
#### 返回值
```json
{
"status": "OK",
"data": "传入的数据"
}
```
> **注意**`data` 字段的内容由调用者决定,保持灵活性。
#### 示例
```python
Success({"id": 1, "name": "张三"})
# 返回:
# {
# "status": "OK",
# "data": {
# "id": 1,
# "name": "张三"
# }
# }
```
---
### `NeedLogin(path)`
指示客户端当前请求需要用户登录,并可指定跳转路径。
#### 参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| `path` | `str` | 登录成功后建议跳转的路径(如 `/login` |
#### 返回值
```json
{
"status": "need_login",
"data": "/login"
}
```
#### 示例
```python
NeedLogin("/login")
# 返回:
# {
# "status": "need_login",
# "data": "/login"
# }
```
前端可根据此状态重定向至登录页。
---
### `NoPermission(path)`
表示用户没有访问该资源的权限,可附带引导路径。
#### 参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| `path` | `str` | 权限不足时建议跳转的页面路径(如 `/forbidden``/home` |
#### 返回值
```json
{
"status": "no_permission",
"data": "/forbidden"
}
```
#### 示例
```python
NoPermission("/home")
# 返回:
# {
# "status": "no_permission",
# "data": "/home"
# }
```
可用于前端展示权限提示或跳转到安全页面。
---
## 响应结构规范
| 字段 | 类型 | 说明 |
|------|------|------|
| `status` | `string` | 响应状态码,取值包括:<br>`"OK"`:成功<br>`"Error"`:通用错误<br>`"need_login"`:需要登录<br>`"no_permission"`:无权限 |
| `data` | `any` | 具体数据内容,结构根据 `status` 而变化 |
推荐前端通过判断 `status` 字段进行相应处理。
---
## 使用示例
```python
# 成功返回用户信息
return Success({
"user_id": 123,
"username": "alice",
"email": "alice@example.com"
})
# 参数校验失败
return Error("VALIDATION_FAILED", "邮箱格式不正确")
# 未登录访问受保护接口
return NeedLogin("/login")
# 用户无权访问管理员功能
return NoPermission("/dashboard")
```
---
## 总结
这组函数简化了 API 响应的构建过程,确保前后端通信格式统一、语义清晰。建议在项目中全局使用,避免手动拼接响应结构带来的不一致性。