我在玩Relay-Starter-Kit。我还使用sangria创建了graphql服务器。现在,我试图将两者连接在一起。

在relay-starter-kit中,每次更改架构时,都需要运行脚本来重新生成schema.json文件。但是由于graphql支持模式自省(introspection),所以我想知道是否有一种方法可以配置我的中继应用程序,使其在启动时从服务器内省(introspection)模式。

有谁知道这是否可行,或者想出如何做到这一点?

最佳答案

定义一个babelRelayPlugin.js(在验证客户端graphql查询时由webpack运行),如下所示:

var babelRelayPlugin   = require('babel-relay-plugin');
var introspectionQuery = require('graphql/utilities').introspectionQuery;
var request            = require('sync-request');

var url = 'http://localhost:3000/graphql';

var response = request('POST', url, {
   qs: {
      query: introspectionQuery
   }
});

var schema = JSON.parse(response.body.toString('utf-8'));

module.exports = babelRelayPlugin(schema.data, {
   abortOnError: true,
});

当然,请将url变量更改为用于开发的任何服务器url。
在webpack中,在加载程序定义中包括以下内容:
query: {stage: 0, plugins: ['./babelRelayPlugin']}

并指向上述babelRelayPlugin.js文件的位置。

关于facebook - 中继应用: How to introspect schema on server?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32178553/

10-11 03:31