为了账号安全,请及时绑定邮箱和手机立即绑定

萌新求教!GraphQL可以实现获取多个资源只用一个请求,这个是能覆盖所有场景的么,我们应该怎么做取舍大佬们有什么好的建议?

萌新求教!GraphQL可以实现获取多个资源只用一个请求,这个是能覆盖所有场景的么,我们应该怎么做取舍大佬们有什么好的建议?

白衣非少年 2019-07-27 00:12:43
问题描述GraphQL可以实现获取多个资源只用一个请求,这个应该是覆盖不到所有场景的吧,很多情况下我们并不能做到一个页面只写一次GraphQL查询,就可以获取这个页面需要的所有数据的问题出现的环境背景及自己尝试过哪些方法有一种场景:一个页面里展示的信息,info1,info2,info3,前端需要请求多个接口,info1对应的接口A中的a字段,info2对应的接口B中的b字段,info3对应的接口C中的c字段///api/user/A{id:1111,name:'张三',a:'当前页面要展示的info1',b:'b'//其他字段}///api/order/B{id:2222,name:'hahah',a:'a'b:'当前页面要展示的info2',//其他字段}///api/system/C{id:3333,name:'hehe',a:'a'c:'当前页面要展示的info3',//其他字段}这个时候,稍微有点脾气的前端,都会去找后端撕逼,前端A:“就这三个字段,你还让我请求三个接口,你不能一个接口都返回给我吗”,后端B:“哎,我也想啊,但是xxxxx,所以我这边不好改,”,...最后那就这样吧。当然,我举得这个例子是一个很简单的场景,实际开发过程中要比这个还要复杂;如果使用GraphQL的话,前端自己写查询,这个页面需要哪些需哪数据,后端就返回给哪些数据,这是考虑到后端所有的接口都在同一个域下面,但是一般比较复杂的系统,后端都会分为不同的域,用户域,商品域,基础模块域,交易域等等,这时即使用了GraphQL也可能后端C:“你看其他都不是我负责的域,我要是自己给你封装一个,我自己底层需要经过xxxxx等复杂的步骤去获取其他域的,这个很复杂,你还是直接去他哪个域去查询吧”,有两种方法,你就再多写一个GraphQL自己写一个node中间层,中间层来处理这些接口数据的聚合,换句话说,中间层来聚合成一个GraphQL查询来返回给前端,中间层分别取调用服务端的三个接口,然后把三个接口返回的数据聚合成前端所需要的疑问就是,有没有更好的办法来实现调用一个接口查询多个资源的问题?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信