graphql: 休息 API 加入
graphql: rest API join
我想知道是否有办法使用 graphql[=21= 在 name 属性上连接两个 rest API ].这些是我得到的回复
// products API
[
{
id: "0001",
name: "a name",
color: "black",
size: "L"
},
{
id: "0002",
name: "an other name",
color: "red",
size: "M"
}
]
// price API
[
{
id: "xyz1",
name: "a name",
price: 10
},
{
id: "xyz2",
name: "an other name",
price: 20
}
]
我想用 graphql 来组合它们,这样
// response from graphql
[
{
id: "0001",
name: "a name",
price: 10,
color: "black",
size: "L"
},
{
id: "0002",
name: "an other name",
price: 20,
color: "red",
size: "M"
}
]
graphql 是正确的工具吗?
GraphQL 不支持在某些属性中加入 2(或更多)API。您可以做的是从解析器中的两个 API 获取数据并创建一个包含两个结果的对象。
类似于(伪代码):
const products: yourDefinedType = []
fetch.productsAPI(productFromAPI
fetch.pricesAPI(pricesFromAPI
if (pricesFromAPI.name === productFromAPI.name) {
product.push({
id: productFromAPI.id,
name: productFromAPI.name,
color: productFromAPI.color,
size: productFromAPI.size,
price: pricesFromAPI.price
})
}
)
)
请记住,这会产生性能问题,因为您需要获取每个产品的所有价格。另一种方法是让您的价格 REST api 以支持按名称获取价格并仅获取您需要的价格。
我想知道是否有办法使用 graphql[=21= 在 name 属性上连接两个 rest API ].这些是我得到的回复
// products API
[
{
id: "0001",
name: "a name",
color: "black",
size: "L"
},
{
id: "0002",
name: "an other name",
color: "red",
size: "M"
}
]
// price API
[
{
id: "xyz1",
name: "a name",
price: 10
},
{
id: "xyz2",
name: "an other name",
price: 20
}
]
我想用 graphql 来组合它们,这样
// response from graphql
[
{
id: "0001",
name: "a name",
price: 10,
color: "black",
size: "L"
},
{
id: "0002",
name: "an other name",
price: 20,
color: "red",
size: "M"
}
]
graphql 是正确的工具吗?
GraphQL 不支持在某些属性中加入 2(或更多)API。您可以做的是从解析器中的两个 API 获取数据并创建一个包含两个结果的对象。
类似于(伪代码):
const products: yourDefinedType = []
fetch.productsAPI(productFromAPI
fetch.pricesAPI(pricesFromAPI
if (pricesFromAPI.name === productFromAPI.name) {
product.push({
id: productFromAPI.id,
name: productFromAPI.name,
color: productFromAPI.color,
size: productFromAPI.size,
price: pricesFromAPI.price
})
}
)
)
请记住,这会产生性能问题,因为您需要获取每个产品的所有价格。另一种方法是让您的价格 REST api 以支持按名称获取价格并仅获取您需要的价格。