文档中心
探索 DWeb 框架的无限可能,构建下一代高性能 Web 应用
API 路由
DWeb 框架支持两种 API 路由模式:**Method 模式**(默认)和 **REST 模式**。两种模式是互斥的,通过 `dweb.config.ts` 中的 `routes.apiMode` 配置项选择。
配置 API 路由模式
在 dweb.config.ts 中配置 API 路由模式:
Code
**注意:**两种模式是互斥的,不能混用。选择一种模式后,所有 API 路由都应遵循该模式的规则。
Method 模式(默认)
Method 模式通过 URL 路径指定方法名,**URL 必须使用中划线格式(kebab-case)**,函数名可以使用驼峰格式(camelCase)。
**⚠️ 重要:URL 格式要求**
✅ **允许**:URL 必须使用中划线格式,例如 `/api/users/get-user`
❌ **不允许**:URL 不能使用驼峰格式,例如 `/api/users/getUser` 会返回 400 错误
✅ **允许**:函数名可以使用驼峰格式,例如 `getUser`、`createUser`
Code
**访问示例:**
Code
REST 模式
REST 模式基于 HTTP 方法和资源路径,支持两种命名方式:
方式 1:直接使用 HTTP 方法名(推荐)
Code
**访问示例:**
Code
方式 2:使用标准 RESTful 命名(备选)
Code
ApiContext 上下文对象
所有 API 路由处理函数都接收一个 ApiContext 对象作为参数,该对象包含处理请求所需的所有信息。
Code
推荐用法:解构参数
推荐只解构实际使用的属性,这样代码更简洁,也更容易理解:
Code
ApiContext 属性说明
req:Request- 请求对象,包含请求方法、URL、请求体等信息res:Response- 响应对象,用于设置响应状态码、响应体等app:ApplicationLike- Application 实例,用于访问服务容器、配置等应用级别的功能cookie:Record- Cookie 对象,包含所有请求的 Cookiesession:Session | null- Session 对象(如果存在),用于存储会话数据params:Record- 路由参数,例如/api/users/:id中的idquery:Record- 查询参数,例如/api/users?id=123中的idroutePath:string- 当前路由路径,例如/api/usersurl:URL- URL 对象,包含完整的 URL 信息(协议、主机、路径、查询参数等)
REST 模式 vs Method 模式对比
- URL 格式:REST 模式 -
GET /api/users、GET /api/users/123;Method 模式 -POST /api/users/get-user、POST /api/users/get-user-by-id - HTTP 方法:REST 模式 - 使用标准 HTTP 方法(GET, POST, PUT, DELETE);Method 模式 - 所有请求默认使用 POST
- 函数命名:REST 模式 - 标准 RESTful 命名(GET, GET_ID, POST, PUT_ID, DELETE_ID)或(index, show, create, update, destroy);Method 模式 - 自定义函数名(getUser, createUser 等),URL 必须使用中划线格式
- 路径简洁性:REST 模式 - 路径简洁,符合 RESTful 规范;Method 模式 - 路径中包含方法名
- 适用场景:REST 模式 - 标准的 CRUD 操作;Method 模式 - 自定义业务方法(如 sendEmail, resetPassword)
**选择建议:**
如果需要标准的 CRUD 操作,使用 **REST 模式**
如果需要自定义的业务方法(如 `sendEmail`、`resetPassword`),使用 **Method 模式**