像GitHub这样的供应商开始提供自己的GraphQL API作为现有REST API的替代方案。然而,许多应用程序不应该直接与这些API交谈,而应该与第一方服务器进行交谈,然后再与这些API交谈。将多个第三方GraphQL API包装在单个GraphQL端点中
使用REST API从一个端点代理整个第三方API是微不足道的。但是现有的GraphQL库似乎都需要事先知道完整的GraphQL模式,似乎没有任何方法可以指定在运行时定义的查询或类型。
更大的问题似乎是整个GraphQL查询将被提前解析。为了将一个子查询传递给第三方API,GraphQL片段必须被保留或重建。
下面是不起作用的例子:
new gql.GraphQLObjectType({
fields() {
return {
thirdPartyApiCall: {
type: '???', // Type is actually defined upstream
resolve() {
// GraphQL sub-query is already parsed at this point
return thirdPartyGraphQLApi(graphQLSubQueryGoesHere)
}
}
}
}
})
我想答案的一部分可能会用内省查询产生在这个例子中type
动态,一旦被载入模式时(尽管当然这意味着它不会反映上游的变化,除非经常重新生成),但是我对如何让原始GraphQL子查询传递给第三方完全丧失了信心。
这是目前可以在GraphQL中解决,而无需编写自定义GraphQL解析器/处理程序,或者GraphQL目前不支持这种类型的委派(即直接包装第三方GraphQL APIs)吗?