Relay 网络层

网络层 #

为了了解如何访问GraphQL服务器,Relay Modern要求开发人员 NetworkLayer 在创建 Relay 环境实例时提供实现实现接口的对象。 环境使用此网络层来执行查询, mutation 和如果您的服务器支持它们) Subscriptions。这允许开发人员使用任何传输(HTTP,WebSockets等)和认证最适合其应用程序,将环境与每个应用程序的网络配置的细节分离。

目前,创建网络层最简单的方法是通过 relay-runtime 软件包中的 helper:

const {Environment, Network} = require('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);

// Create an environment using this network:
const environment = new Environment({
  ..., // other options
  network,
});

注意,这是一个帮助您入门的基本示例。此示例可以通过附加功能进行扩展,例如请求/响应缓存(启用,例如,当 cacheConfig.force 为false时) 和上传表单数据给 mutation( uploadables 参数)。