【发布时间】:2019-09-30 23:34:05
【问题描述】:
我有以下我认为相当普遍的结构。我一直在寻找并且找不到任何关于模式拼接服务相互调用的推荐方式的任何信息(同时仍被前端使用)。这是我的情况:
Api 网关模式缝合:
- 用户服务
- 帖子服务
posts 服务使用 mongodb,users 服务使用 PostgreSQL。帖子服务的架构仅包含 user_id 而不是完整用户。当我需要一页帖子(带有相应的用户信息)时,我正在使用帖子服务中的 getPosts 解析器中的 node-fetch 调用用户服务,如下所示:
{
getUsers(user_id__in:[1,5,9,3]){
username
join_date
}
}
与 apollo-graphql 的其余部分的优雅相比,这个解决方案感觉有点“肮脏”。
是否更常见的是忽略 graphql 部分来解析数据并使用 apollo-graphql 的底层 express 服务器提供的典型 rest 端点结构?如果不是,我应该直接调用其他服务还是通过 api 网关调用它们?如果我应该通过 api 网关调用它们,有没有一种内置的优雅方式可以使用某些 Apollo 功能调用 api 网关(因为服务是模式拼接的)。
【问题讨论】: