我有两个微服务 ms1 和 ms2,每次使用 Apollo GraphQL 构建的 API 网关通过解析器发送请求时,它们都会输出不同类型的数据。
具体来说,第一个解析器
getCart(userId: ID!): Cart!
调用 ms1 并使用以下响应主体对其进行响应:
{
"items": [
{
"itemId": "8a016af8-5336-4799-b806-73976996aa6f",
"quantity": 1
},
{
"itemId": "9a016af8-5336-4799-b806-73976996aa6f",
"quantity": 2
}
]
}
也就是说,
Cart
类型,只是一个包含具有 id 和数量的项目数组的对象。
第二个解析器
getItem(itemId: ID!): Item!
调用 ms2 并使用以下响应正文对其进行响应:
{
"itemId": "7a016af8-5336-4b99-b806-73976996aadf",
"name": "Jack Daniel's Blue Label",
"price": 29.99
}
有什么方法可以直接从前端(例如 Apollo Sandbox 或 GraphiQL)“组合”或排序这两个查询,以便我得到以下响应?
{
"items": [
{
"itemId": "8a016af8-5336-4799-b806-73976996aa6f",
"name": "Jack Daniel's - Honey",
"price": 19.99,
"quantity": 1
},
{
"itemId": "7a016af8-5336-4799-b806-73976996aa6f",
"name": "Jack Daniel's - Red Label",
"price": 29.99,
"quantity": 2
}
]
}
在伪 graphql 中我在想这样的事情:
query GetCartInfo($userId: ID!) {
getCart(userId: $userId) {
items {
itemId => getItem(itemId: $itemId) {
name
price
}
quantity
}
}
}
如果那不可能,实现这一目标的最佳方法是什么?在 API 网关中创建一个新的解析器?从前端的另一个服务修改数组?
感谢您提供有关该主题的帮助和信息,我将不胜感激:D
祝你有美好的一天!