首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阿波罗联邦网关和另一个服务器实现

阿波罗联邦网关和另一个服务器实现
EN

Stack Overflow用户
提问于 2019-06-03 16:53:18
回答 3查看 2.2K关注 0票数 1

我正在阅读关于阿波罗联邦以及如何从模式拼接中迁移的文章。当我阅读时,有一个问题出现了:

从缝合网关迁移到阿波罗联邦的基本策略是首先使底层服务联邦具有能力。

https://www.apollographql.com/docs/apollo-server/federation/migrating-from-stitching/#adding-federation-support-to-services

基本上联邦网关不能接受另一个服务,没有联邦意识到?因此,没有办法与另一个graphql服务器(例如https://github.com/nuwave/lighthouse)一起使用联合,或者我是否应该误解这一行?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-03 17:39:14

是的,任何合并到联邦网关中的GraphQL服务都必须实现阿波罗的联邦规格

联邦依赖于包含几种特定类型、指令和类型扩展的服务模式:

代码语言:javascript
复制
scalar _Any
scalar _FieldSet

union _Entity

type _Service {
  sdl: String
}

extend type Query {
  _entities(representations: [_Any!]!): [_Entity]!
  _service: _Service!
}

directive @external on FIELD_DEFINITION
directive @requires(fields: _FieldSet!) on FIELD_DEFINITION
directive @provides(fields: _FieldSet!) on FIELD_DEFINITION
directive @key(fields: _FieldSet!) on OBJECT
directive @extends on OBJECT

服务不一定是GraphQL.js实现,但它确实需要实现规范中概述的上述模式添加。

票数 5
EN

Stack Overflow用户

发布于 2020-02-12 17:20:51

@daniel-rearden said一样,它确实需要实现对规范的添加。查看graphql-转换-联合以帮助您添加所需的信息。还请查看此博客帖子

票数 1
EN

Stack Overflow用户

发布于 2019-10-27 14:17:28

一旦您拥有了服务器,您还需要构建网关,如果您使用的是docker -组合,您可以使用一个可重用的坞映像,如下所示:

代码语言:javascript
复制
version: '3'

services:
    a:
        build: ./a # one service implementing federation
    b:
        build: ./b
    gateway:
        image: xmorse/apollo-federation-gateway
        ports:
            - 8000:80
        environment: 
            CACHE_MAX_AGE: '5' # default cache
            ENGINE_API_KEY: '...' # to connect to the apollo engine
            POLL_INTERVAL: 30 # to update services changes
            URL_0: "http://a"
            URL_1: "http://b"

查看github回购以获得一个有用的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56431574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档