2

我目前正在尝试测试 1 个服务的 graphql 端点,该端点最终将成为 apollo-federation/gateway graphql 服务器的一部分。此服务将扩展现有联合图中现有服务中的类型。

如果我想使用 apollo-federation & gateway 单独测试我的服务,有没有办法在我的 graphql 模式中仍然使用@extends它?@external目前网关抛出: UnhandledPromiseRejectionWarning: Error: Unknown type: "SomeTypeInAnotherServer",这是有道理的,因为没有要扩展的类型,但是我可以以某种方式忽略此验证吗?

4

2 回答 2

1

正如@xadm 在评论中发布的那样,您可以使用https://github.com/xolvio/federation-testing-tool来解决我的问题。

于 2020-06-12T14:38:14.743 回答
0

您的问题看起来像是您正在尝试进行开发,但您给出的答案看起来像是您专门在进行测试。我不知道这是否是由于工具而导致的结果,或者这是否是您的实际问题,但这是我为开发人员提供的答案:

如果您只是运行其中一项服务,您仍然可以对其进行查询,只需按照 ApolloGateway 的方式进行即可。比如说,你有一个 person-service 和一个 place-service,而且 People 可以访问很多地方:

个人服务

type Person @key(fields: "id") {
  id: ID!
  name: String
}

type Query {
  person(id: ID): Person # Assuming this is the only entry-point
}

地方服务

type Place {
  id: ID!
  name: String
}

extend type Person @key(fields: "id") {
  id: ID!
  placesVisited: [Place]
}

现在您可以对 place-service 进行以下查询:

query ($_representations: [_Any!]!) {
  _entities(representations:$_representations) {
    ... on Person {
      id
      placesVisited {
        id
        name
      }
    }
  }
}

这是您的输入:

{
  "_representations": [{
    "__typename": "Person",
    "id": "some-id-of-some-person"
  }]
}
于 2020-07-07T00:14:43.690 回答