网络层
为了知道如何访问您的 GraphQL 服务器,Relay 要求开发人员在创建 Relay 环境实例时提供一个实现 INetwork
接口的对象。环境使用此网络层来执行查询、变异和(如果您的服务器支持)订阅。这使开发人员能够使用最适合其应用程序的传输(HTTP、WebSockets 等)和身份验证,将环境与每个应用程序网络配置的细节分离。
目前,创建网络层的最佳方式是使用 relay-runtime
包中的助手函数
import {
Environment,
Network,
RecordSource,
Store,
} from 'relay-runtime';
// Define a function that fetches the results of an operation (query/mutation/etc)
// and returns its results as a Promise:
function fetchQuery(
operation,
variables,
cacheConfig,
uploadables,
) {
return fetch('/graphql', {
method: 'POST',
headers: {
// Add authentication and other headers here
'content-type': 'application/json'
},
body: JSON.stringify({
query: operation.text, // GraphQL text from input
variables,
}),
}).then(response => {
return response.json();
});
}
// Create a network layer from the fetch function
const network = Network.create(fetchQuery);
const store = new Store(new RecordSource())
const environment = new Environment({
network,
store
// ... other options
});
export default environment;
请注意,这是一个基本的示例,帮助您入门。此示例可以扩展,包括其他功能,例如请求/响应缓存(例如,当 cacheConfig.force
为假时启用)和上传变异的表单数据(uploadables
参数)。
缓存
Relay 存储会缓存当前保留的查询中的数据。请参阅指南中有关 重用缓存数据 的部分。
此页面是否有用?
通过以下方式帮助我们改进网站: 回答几个简单的问题.