【问题标题】:Join two under-serving microservices in Apollo GraphQL在 Apollo GraphQL 中加入两个服务不足的微服务
【发布时间】:2018-07-26 16:32:14
【问题描述】:

我对 GraphQL 比较陌生,在连接来自两个微服务的数据时遇到了麻烦。

假设我有两个微服务,一个是汽车尺寸,另一个是汽车库存。

所以第一个响应是这样的:

GET - /cars/sizes =>

[
  {
    "id": 123,
    "size": "big"
  },
  {
    "id": 456,
    "size": "small"
  },
  ...
]

第二个,类似这样的

GET - /cars/stock =>

[
  {
    "id": 123,
    "stock": 27
  },
  {
    "id": 456,
    "stock": 12
  },
  ...
]

如何在 Apollo GraphQL 上实现 cars 解析器,这样的查询如下:

query {
  cars {
    id
    size
  }
}

不问第二个微服务,但是:

query {
  cars {
    id
    size
    stock
  }
}

只有一次吗?提前致谢!

【问题讨论】:

    标签: node.js graphql apollo-server


    【解决方案1】:

    在库存字段本身的解析器中添加库存查找,而不是作为汽车解析器的一部分进行。这样,只有在您实际查询 stock 字段时才会执行它。

    【讨论】:

    • Buf 为每辆车我将为每辆车向stock 微服务发出一个新的 HTTP 请求...:(
    • 如果您在单个查询的生命周期内记住请求,您可以根据需要多次调用相同的调用,而不会受到任何惩罚。这有点像黑客,但很有用。在理想情况下,您的微服务将公开端点,让您可以通过 ID 获取成批的东西,然后您可以使用 Dataloader(在 JavaScript 中)之类的东西来更有效地获取东西。我在这里谈论了很多最佳模式:dev-blog.apollodata.com/…
    猜你喜欢
    • 2017-01-14
    • 2021-04-19
    • 2017-11-07
    • 2019-09-11
    • 2020-05-11
    • 2021-07-09
    • 2020-12-25
    • 2019-11-15
    • 2019-04-09
    相关资源
    最近更新 更多