// Comment服务 type Comment @key(fields: "id") { id: ID! postId: ID! text: String! }
extend type Query { getCommentById(id: ID!): Comment }
// Post服务 type Post @key(fields: "id") { id: ID! title: String! authorId: ID! }
extend type Query { getPostById(id: ID!): Post }
// 扩展Comment服务 const resolvers = { Comment: { post(comment) { return { __typename: 'Post', id: comment.postId }; }, }, }; const server = new ApolloServer({ schema: buildFederatedSchema([ { typeDefs: CommentServiceTypeDefs, resolvers, }, ]), });
// 扩展Post服务 const resolvers = { Post: { comments(post) { return [ { __typename: 'Comment', id: '1', text: 'Comment 1 for Post 1', postId: '1' }, { __typename: 'Comment', id: '2', text: 'Comment 2 for Post 1', postId: '1' }, { __typename: 'Comment', id: '3', text: 'Comment 1 for Post 2', postId: '2' }, { __typename: 'Comment', id: '4', text: 'Comment 2 for Post 2', postId: '2' }, ].filter(comment => comment.postId === post.id); }, }, }; const server = new ApolloServer({ schema: buildFederatedSchema([ { typeDefs: PostServiceTypeDefs, resolvers, }, ]), });
// Apollo Federation Gateway中的服务设置 const gateway = new ApolloGateway({ serviceList: [ { name: 'comment-service', url: '[Comment Service URL]' }, { name: 'post-service', url: '[Post Service URL]' }, ], });
const server = new ApolloServer({ gateway, subscriptions: false, });
// 启动Apollo Federation Gateway服务器
server.listen().then(({ url }) => {
console.log(� Gateway ready at ${url}
);
});
上一篇:axis中未找到几何形状。
下一篇:AXI协议中的杰出行为