Unifying frontend/backend API contracts and improving API maintenance.
Raw Developer Origin & Technical Request
GitHub Issue
Aug 27, 2026
# RFC 用 tRPC 统一前后端接口契约
## 摘要
建议把 Amagine3D 现有 JSON API 迁到 tRPC,用一套路由定义同时约束前端调用、后端输入和返回类型。第一期只处理普通 JSON 接口,聊天流、文件下载和 ZIP 下载先保留现状。
## 背景与动机
现在接口契约分散在几处。
- 前端在 `Amagine3D/src/lib/agent-api.ts` 手写 `fetch` 和 URL。
- 后端在 `Amagine3D/server/routes/sessions.ts`、`Amagine3D/server/routes/chat.ts`、`Amagine3D/server/app.ts` 注册 Express route。
- 请求校验分散在 `server/protocol.ts`、`server/model-parameters.ts` 和 route 内部。
- 返回值主要靠前端 `as Type` 断言,服务端改字段时不一定会被调用方发现。
这会让后续接口变多以后更难维护。比如 session、artifact、parameter rebuild、trash 这些接口都需要同时改路径、请求体、返回类型、错误处理和测试。Amagine3D 的前后端都在 TypeScript 仓库里,tRPC 可以减少这类重复维护。
## 详细设计
新增一个 tRPC router,挂在 `/trpc`。
建议模块。
- `server/trpc/context.ts`
- `server/trpc/router.ts`
- `server/trpc/schemas.ts`
- `src/lib/trpc-client.ts`
第一期迁移这些 JSON 接口。
- `health.get`
- `sessions.catalog`
- `sessions.detail`
- `sessions.storage`
- `sessions.artifacts`
- `sessions.parameters`
- `sessions.rebuildParameters`
- `sessions.trashArtifacts`
- `sessions.trashStorage`
暂时不迁移这些接口。
- `/api/chat`,它现在返回 NDJSON AgentEvent 流。
- `/api/sessions/:sessionId/artifacts/file` 和 `/api/bundled-artifacts/file`,它们是文件流。
- `/api/sessions/:sessionId/artifacts/archive`,它返回 ZIP Blob。
输入校验建议用 `zod` 收敛到 `server/trpc/schemas.ts`。先覆盖 `sessionId`、artifact path、parameter rebuild body、trash body。现有 `src/types.ts` 可以先继续作为共享展示类型,避免一次改太多。
前端先保留 `agent-api.ts` 对外导出的函数名,只把内部实现从手写 `fetch` 换成 tRPC client。这样 `CadWorkbench`、`ParametersPanel`、`FilesPanel` 等组件不用跟着大改。
错误处理用 tRPC 的错误类型表达现有语义。400、403、404、409、503 继续保留对应含义。前端...
Developer Debate & Comments
No active discussions extracted for this entry yet.
Adjacent Repository Pain Points
Other highly discussed features and pain points extracted from amagine-ai/Amagine3D.
Frequently Asked Questions
Market intelligence mapped to Unifying frontend/backend API contracts and improving API maintenance..
What is the technical positioning of Unifying frontend/backend API contracts and improving API maintenance.?
How is the developer community reacting to Unifying frontend/backend API contracts and improving API maintenance.?
Which technical concepts are associated with Unifying frontend/backend API contracts and improving API maintenance.?
Which commercial products utilize Unifying frontend/backend API contracts and improving API maintenance.?
Engagement Signals
Cross-Market Term Frequency
Quantifies the cross-market adoption of foundational terms like TypeScript and fetch by tracking occurrence frequency across active SaaS architectures and enterprise developer debates.
SaaS Metrics