我在玩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/