V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
fescover
V2EX  ›  问与答

试用了下 trpc,发现限制挺多的

  •  
  •   fescover · 2023-02-19 17:05:44 +08:00 · 2064 次点击
    这是一个创建于 637 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近社区很多人推荐 trpc
    遂结合 nextjs 做了 demo 试了一下
    有这么几个问题
    1. 必须使用 ts? 目前生产环境的服务端主流还是 java,py,go
    2. 只能用在前后端结合的单仓库中?没有办法把 server 单独分离仓库出来
    3. 比如账户,支付,内容,IM 的多个分布式服务怎么办?不可能都集成到一个 server 里
    4. 如果 server 要提供通用的多平台 api 怎么办,安卓和 ios 开发用不了 trpc 接口
    5. 如何生成 api 文档?光有 ts 定义是不够的,看 api 文档更直观
    6. 调第三方接口怎么办? 客户端还是得安装 http 请求库,会有多个请求方式共存
    5 条回复    2023-07-15 04:59:27 +08:00
    releaseme
        1
    releaseme  
       2023-02-20 10:30:06 +08:00
    我觉得 trpc 的定位就是解决 node + ts 全栈开发的痛点。有 1 2 的场景基本可以不用考虑
    wateryessence
        2
    wateryessence  
       2023-02-20 21:12:14 +08:00   ❤️ 1
    pjxxcc
        3
    pjxxcc  
       2023-05-28 01:52:55 +08:00
    同正在学 trpc ,我看的是 t3 stack ,官网有介绍 trpc 接口如何支持 open api ,允许其他客户端 /postman 等工具访问接口。
    官网文档提供了两种方案,[how-do-i-call-my-api-externally]( https://create.t3.gg/en/usage/trpc#how-do-i-call-my-api-externally),推荐用第二种,写出来的接口既支持 trpc 调用也支持 restful 调用
    pjxxcc
        4
    pjxxcc  
       2023-05-28 01:54:37 +08:00
    我是卡在 trpc 入参声明上了,看文档只支持字符串、数字等基础类型,对于入参有多层嵌套的 object 我一直没找到解决方案,只能扛着 eslint 报错直接跑
    h4avone
        5
    h4avone  
       2023-07-15 04:59:27 +08:00   ❤️ 1
    我来尝试回答下,哈哈

    1. 必须使用 ts? 目前生产环境的服务端主流还是 java,py,go

    JavaScript/TypeScript 前后端都可以用,利用这个特性做的前后端类型共享,再利用下。

    当然 java/py/go 也可以做到这点,但是需要遵循 openapi 规范做。

    2. 只能用在前后端结合的单仓库中?没有办法把 server 单独分离仓库出来

    有办法的,可以把 server 单独放一个仓库,再把 server 类型通过 tsc 单独导出一个 npm 包,只含 ts 类型给 client 端用。

    3. 比如账户,支付,内容,IM 的多个分布式服务怎么办?不可能都集成到一个 server 里

    同上。

    4. 如果 server 要提供通用的多平台 api 怎么办,安卓和 ios 开发用不了 trpc 接口
    这个也是可以的,trpc 可以导出 openapi 规范的文档(至于怎么导出,可以搜下对应关键词 trpc openapi);有了 openapi 规范,再找个安卓和 iOS 的 openapi 库,包一包就好啦!

    5. 如何生成 api 文档?光有 ts 定义是不够的,看 api 文档更直观
    同上,可以生成 openapi 文档;或者写好注释,导出 ts 注释文档,写的时候都有类型提醒,非常方便。

    6. 调第三方接口怎么办? 客户端还是得安装 http 请求库,会有多个请求方式共存
    这个问题,其他的方式也会存在的,和 trpc 没关系,http 请求库看看 trpc/client 默认用的哪一个。前端都用 fetch ,再安装一个 axios 其实也没多大。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2554 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 00:28 · PVG 08:28 · LAX 16:28 · JFK 19:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.