【发布时间】:2017-02-05 03:00:11
【问题描述】:
GitHub 等供应商开始提供他们自己的 GraphQL API 作为现有 REST API 的替代方案。然而,许多应用不应该直接与这些 API 对话,而是与第一方服务器对话,这些服务器反过来与这些 API 对话。
使用 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 目前是否不支持这种委托(即直接包装第 3 方 GraphQL API)?
【问题讨论】:
标签: api graphql graphql-js