我正在运行基于GraphQL的服务器,我可以使用GraphiQL正确测试它。但我无法理解Relay的实现。
由于GraphQL位于服务器端,那么它的架构如何通过客户端的网络层传输到中继?或者它是如何指向相同的GraphQL的?
答案 0 :(得分:0)
这需要一些额外的工作。基本上,您必须将模式的序列化版本转储到服务器端的文件,然后将该文件移动到客户端并在babel编译期间包含它。 Facebook有babel plugin获取此文件并将其构建到捆绑包中,以便Relay了解架构。
编辑:这是一个如何将模式文件转储到JSON
的代码片段import { graphql } from 'graphql'
import { introspectionQuery, printSchema } from 'graphql/utilities'
/*
generates json of our schema for use by relay
*/
export default function (schema) {
return new Promise((resolve, reject) => {
graphql(schema, introspectionQuery).then(result => {
if (result.errors) {
console.error(`ERROR introspecting schema: ${result.errors}`)
reject(new Error(result.errors))
} else {
resolve({ json: result, graphql: printSchema(schema) })
}
})
})
}
获得后,您必须npm install babel-relay-plugin
并将其包含在您的babel插件中(如果您正在使用它,可能在webpack配置中)。