如何让tRPC服务器返回纯文本响应?
如何让tRPC服务器直接返回原始数据而非嵌套格式
自定义响应转换器
在tRPC服务器的适配器配置里,通过responseTransformer修改输出结构。以Express适配器为例:import { expressMiddleware } from '@trpc/server/adapters/express'; import { appRouter } from './router'; app.use('/trpc', expressMiddleware({ router: appRouter, responseTransformer: (res) => { // 直接返回result中的data字段,无嵌套 return res.result?.data ?? res; }, }));这个方法会全局修改所有路由的响应格式,把默认的嵌套结构拆解成原始数据。
单路由单独处理
要是只需要特定路由返回原始数据,可在路由定义里直接返回最终值,再配合上面的转换器:import { initTRPC } from '@trpc/server'; const t = initTRPC.create(); const publicProcedure = t.procedure; export const appRouter = t.router({ hello: publicProcedure.query(() => { return "OK!"; }), });注意点
- 改完后tRPC官方客户端可能无法正常解析响应,如果你用了官方客户端,得同步调整客户端的解析逻辑。
- 对外提供API时,要确认调用方适配这种非标准格式,避免兼容性问题。
内容的提问来源于stack exchange,提问作者stack5
相关产品推荐
相关产品推荐

