使用 Apollo federation 处理私有突变

Handle private mutations with Apollo federation

在微服务架构中,我确实有被最终用户使用的 GraphQL 变化,还有一些只是内部的。

我打算搬到阿波罗联邦。是否有一种内置方法可以将突变声明为意外,以便最终用户无法访问它,但可以直接由内部服务调用?

我不确定最好的设计是什么;我不希望在这样的情况下结束,我必须 运行 两个不同的微服务服务器:一个 public 和一个私有服务器。

简而言之:不,没有内置或传统的方式来将部分架构声明为 "private." 您可以设计自己的 @private schema directive, which could wrap resolvers with an authentication check that requires a service API key rather than a user access token. These mutations would still be visible on in your schema — that is, they will likely appear in any automatically generated API documentation — but they would be effectively unusable by regular users. In this Apollo Server issue,一个 Apollo开发人员提到计划为此目的提供一个内置的 @internal 指令,但它似乎还不可用。