与阿波罗联盟隔离构建GraphQL服务

时间:2020-06-10 17:29:30

标签: graphql apollo-federation

我目前正在尝试测试1个服务的graphql端点,该端点最终将与阿波罗联邦/网关graphql服务器分开。该服务将扩展现有联合图中现有服务中的类型。

如果我想用阿波罗联合会和网关单独测试我的服务,是否有办法在我的graphql模式中仍然使用as@extends的情况下做到这一点?当前,网关会抛出:@external,这很有意义,因为没有类型可以扩展,但是我可以以某种方式忽略此验证吗?

2 个答案:

答案 0 :(得分:0)

@xadm在评论中发布,您可以使用https://github.com/xolvio/federation-testing-tool实现此目的,从而解决了我的问题。

答案 1 :(得分:0)

您的问题看起来像您正在尝试进行开发,但是您给出的答案似乎是您正在专门进行测试。我不知道那是因为工具而导致的最终结果,还是那是您的实际问题,但这是我对从事开发工作的人们的回答:

如果您仅运行其中一项服务,则仍然可以对它进行查询,只需按照ApolloGateway的方式进行即可。假设您有一个人事服务和一个地方服务,人们可以访问许多地方:

人员服务

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]
}

现在,您可以对位置服务进行以下查询:

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

这是您的输入内容:

{
  "_representations": [{
    "__typename": "Person",
    "id": "some-id-of-some-person"
  }]
}