猿问

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

问题描述
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查询来返回给前端,中间层分别取调用服务端的三个接口,然后把三个接口返回的数据聚合成前端所需要的
疑问就是,有没有更好的办法来实现调用一个接口查询多个资源的问题?
白衣非少年
浏览 212回答 2
2回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答