Apollo联邦:Federation是否取代delegateToSchema?
创始人
2024-09-09 12:01:22
0

在Apollo联邦中,使用delegateToSchema来将查询委托给子服务是一种常见的方法。然而,最近推出的Apollo联邦的新功能Federation提供了一种更强大和灵活的方法来处理查询的委托。下面是一个示例,展示了如何使用Federation来取代delegateToSchema的方法。

首先,确保你的子服务已经升级到支持Federation。然后,确保你的网关也已经升级到最新版本。

在网关的ApolloServer配置中,将schema的类型设置为FederatedSchema,并传入你的子服务的schema列表。例如:

const { ApolloServer } = require('apollo-server');
const { ApolloGateway, FederatedSchema } = require('@apollo/federation');

const gateway = new ApolloGateway({
  serviceList: [
    { name: 'accounts', url: 'http://localhost:4001' },
    { name: 'products', url: 'http://localhost:4002' },
  ],
});

const server = new ApolloServer({
  schema: FederatedSchema,
  gateway,
});

server.listen().then(({ url }) => {
  console.log(`Gateway ready at ${url}`);
});

在子服务的schema中,使用@key指令指定实体类型的唯一标识符。例如,对于一个用户服务,可以这样定义User类型:

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

在子服务的resolver中,使用@requires指令指定其他服务所需的字段。例如,对于一个订单服务,可以这样定义Order类型:

type Order {
  id: ID!
  user: User @requires(fields: "userId")
  total: Float!
}

type User {
  id: ID!
  name: String!
  email: String!
}

这样,你就可以在网关中直接查询Order,并使用Federation自动将查询委托给适当的子服务。例如,查询一个订单的用户信息:

query {
  order(id: "123") {
    id
    user {
      id
      name
      email
    }
    total
  }
}

这个查询会被网关自动解析并委托给适当的子服务,然后返回整个查询结果。

总之,使用Apollo联邦的Federation功能可以更简单和灵活地处理查询的委托,而不再需要使用delegateToSchema。

相关内容

热门资讯

一分钟教你!山西扣点子辅助器,... 一分钟教你!山西扣点子辅助器,决战卡五星辅助,细节开挂辅助教程(存在有挂);无需打开直接搜索加薇13...
科技介绍!小逸碰胡脚本,情怀打... 科技介绍!小逸碰胡脚本,情怀打七开辅助,分享开挂辅助教程(有挂方式);无需打开直接搜索打开薇:136...
记者发布!爱来辅助器,杭州都莱... 记者发布!爱来辅助器,杭州都莱破解版,盘点开挂辅助教程(有挂头条);无需打开直接搜索打开薇:1367...
玩家必备科普!钱塘十水三挂件,... 玩家必备科普!钱塘十水三挂件,开心泉州小程序有挂吗,细节开挂辅助教程(新版有挂);无需打开直接搜索薇...
玩家必用!蜀山四川小程序辅助,... 玩家必用!蜀山四川小程序辅助,掌电竞技辅助工具,细节开挂辅助教程(有挂方略);无需打开直接搜索薇:1...
今日科普!闲玩暗宝辅助软件,浙... 今日科普!闲玩暗宝辅助软件,浙江游戏大厅脚本修改,正品开挂辅助教程(有挂方略);无需打开直接搜索加(...
终于知道!小唐家乐园山西辅助软... 终于知道!小唐家乐园山西辅助软件,广西友乐辅助器,关于开挂辅助教程(有挂功能);无需打开直接搜索加薇...
详细说明!福建微乐小程序修改器... 详细说明!福建微乐小程序修改器,小闲川南宜宾辅助,必看开挂辅助教程(竟然有挂);无需打开直接搜索薇:...
关于!微信大a辅助,黑桃a3辅... 关于!微信大a辅助,黑桃a3辅助,正版开挂辅助教程(存在有挂);无需打开直接搜索加(薇:136704...
我来教教大家!蜀渝牌乐汇修改器... 我来教教大家!蜀渝牌乐汇修改器,河洛杠次脚本开发,曝光开挂辅助教程(有挂工具);无需打开直接搜索加薇...