GraphQL 为什么国内很少用?权限如何处理?对参数的逻辑验证如何处理? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tanxnative
V2EX    问与答

GraphQL 为什么国内很少用?权限如何处理?对参数的逻辑验证如何处理?

  •  
  •   tanxnative 2024-09-29 11:05:18 +08:00 1624 次点击
    这是一个创建于 443 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • graphQL 为啥国内用的很少(可能个人目光短浅,看到的接口少)
    • GraphQL 的权限如何处理呢(特别是数据权限,例如某人只能看到自己部门的数据,GraphQL 好像没有标准支持)
    • 对于突变 如何验证参数? 特别是逻辑上的验证 (例如 存在 xx 才能 xx)
    3 条回复    2024-09-29 17:01:10 +08:00
    codespots
        1
    codespots  
       2024-09-29 11:15:36 +08:00
    因为真的不好用,虽然我是前端是作为理论上的受益者
    XCFOX
        2
    XCFOX  
       2024-09-29 11:52:59 +08:00
    1. GraphQL 需要整个团队巨额的学习成本,相比整个用 GraphQL 重构不如糊个 BFF 层; GraphQL 的生态和普及度还比不上 RESTful ;

    2. 权限处理和 RESTful 并无二致,在请求进来时判断用户权限,在查数据库时加额外条件;

    3. 我个人理解拿到参数就能验证了,楼主可能在找一种更便捷的验证手段,推荐使用 GQLoom 框架( https://gqloom.dev/ ),天然集成 zod 、valibot 作为验证库,有完善的中文文档。
    obwj
        3
    obwj  
       2024-09-29 17:01:10 +08:00
    graphql 资深玩家,公司技术全走 graphql ,玩通了非常非常舒服(前后端全精通)。
    国内生态确实不如国外,我们技

    1. graphQL 为啥国内用的很少(可能个人目光短浅,看到的接口少)
    graphql 学习门槛高,对业务其实没有很多帮助,没有经验的团队反而会降低开发效率。

    ps:
    但我的个人推荐使用的原因:graphql 可以改善技术债,强制无技术债
    并且我的团队已经对 graphql 非常熟悉,我们还打算出一套自己的 graphql 框架。

    2. GraphQL 的权限如何处理呢(特别是数据权限,例如某人只能看到自己部门的数据,GraphQL 好像没有标准支持)

    后端拿到用户身份后,返回信息即可,如果你说意思说:A 部门返回的数据格式是 A 类型,B 部门返回的数据格式是 B 类型,这种需要后端定义 union

    3. 对于突变 如何验证参数? 特别是逻辑上的验证 (例如 存在 xx 才能 xx)

    定义不同的 input ,前端选填
    前端后端 定义不同的验证规则



    graphql 一定要玩注解、fragment 、union
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3234 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 11:32 PVG 19:32 LAX 03:32 JFK 06:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86