簡體   English   中英

Relay從哪里獲取GraphQL的Schema?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM