[英]From where does Relay fetch the Schema of GraphQL?
我正在運行基於GraphQL的服務器,我可以使用GraphiQL正確測試它。 但我無法理解Relay的實現。
由於GraphQL位於服務器端,那么它的架構如何通過客戶端的網絡層傳輸到中繼? 或者它是如何指向相同的GraphQL的?
這需要一些額外的工作。 基本上,您必須將模式的序列化版本轉儲到服務器端的文件,然后將該文件移動到客戶端並在babel編譯期間包含它。 Facebook有一個babel插件 ,可以獲取此文件並將其構建到捆綁包中,以便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配置中)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.