跳转到正文

English core guides · 历史记录保留中文

请求上下文与中间件 ​

请求上下文 ​

定义位于 apps/api/lib/context.ts,业务接口每次请求获得独立上下文。

字段用途
req、info原始请求与接口调用元信息
db实时数据库连接,默认选用
dbCached有查询缓存的连接,仅在允许旧数据时使用
user、session解析后的身份,未登录时为空
env已校验的环境配置
res、resHeaders特定响应处理所需的可选字段

Hono 上下文保存数据库和认证实例,并不提前声明一个没有赋值的用户。会话由 tRPC 上下文构造过程解析。

中间件顺序 ​

线上入口先安装错误处理,再启用安全响应头、请求标识和日志,然后解析环境并创建数据库与认证实例,最后挂载业务路由。入口代码在 apps/api/worker.ts。

protectedProcedure 在执行业务逻辑前检查用户和会话,成功后提供非空类型。资源级权限检查仍在具体业务操作内执行。

请求标识与日志 ​

请求标识由 apps/api/lib/middleware.ts 生成,排查时将客户端看到的标识与服务端日志对应。记录路径、耗时和错误类型即可;不记录认证 token、密码、完整支付凭据或用户文件正文。

缓存连接的限制 ​

认证、成员权限、订阅、积分以及写入后立即读取统一用 db。Hyperdrive 查询缓存不会因为业务写入自动失效,前端重新请求也可能得到旧结果。只有明确允许短期旧数据的读取才选 dbCached。

本地数据库实现与线上驱动不同,业务层通过 @repo/db 的 Database 类型约束,避免依赖驱动私有字段。

供语言模型读取:llms.txt · llms-full.txt
采用 MIT 许可证。