在微服务体系结构中,我确实有GraphQL突变,这些突变被认为是最终用户使用的突变,还有一些仅在内部使用。
我打算搬到阿波罗联邦。是否有内置的方法将突变声明为意外突变,以便最终用户无法访问它,但内部服务可以直接调用它?
我不确定最好的设计是什么;我不想最终陷入必须为微服务运行两个不同服务器的情况:公共服务器和私有服务器。
答案 0 :(得分:1)
简而言之:不,没有内置或常规的方式将模式的某些部分声明为“私有”。您可以设计自己的@private
schema directive,它可以使用要求服务API密钥而不是用户访问令牌的身份验证检查来包装解析程序。这些突变仍将在您的模式中可见-也就是说,它们很可能会出现在任何自动生成的API文档中-但对于常规用户而言,它们实际上将无法使用。在this Apollo Server issue中,Apollo开发人员提到了为此目的提供内置@internal
指令的计划,但该指令似乎尚不可用。