为何tRPC的procedure需要使用2种类的操作呢(query和mutation)?

请问:
为何tRPC的procedure需要使用2种类的操作呢(query和mutation)?

参考官网:
20241219160321.jpg

我们看到都是在input验证之后,就进行操作,为何需要query和mutation两种?一种也是可以进行操作的呀?

greeting: t.procedure
    .input(z.object({ name: z.string() }))
    .query((opts) => `Hello ${opts.input.name}`),



add: t.procedure.input(z.string()).mutation((opts) => {
      posts.push(opts.input);
      return posts;
    }),
阅读 409
1 个回答

为了语义化

查询就是查询,增改删就是增改删。

就好比 RESTful 里 GET 就是查,你要增那就用 POST,改那就用 PUT,删那就用 DELETE。你非说反正任何参数都能放到 POST Body 里,难道不能全都用 POST 一把梭吗?确实可以,要是你自己“发明”一种协议或规范,那你想怎么干就怎么干,只要你自己能逻辑自洽并且让大家都接受,那你全用 POST 也未尝不可。

但 tRPC 作者本人显然是主张语义化的:https://github.com/trpc/trpc/discussions/1638

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏