W3cubDocs

/Relay

RelayNetworkLayer

Custom network layers that must conform to the RelayNetworkLayer interface.

Overview

Methods

Methods

sendMutation

sendMutation(mutationRequest: RelayMutationRequest): ?Promise

Implement this method to send mutations to the server. When the server response is obtained, this method must either call mutationRequest.resolve with the response data, or mutationRequest.reject with an Error object.

This method can optionally return a promise in order to facilitate proper error propagation.

Example

sendMutation(mutationRequest) {
  return fetch(...).then(result => {
    if (result.errors) {
      mutationRequest.reject(new Error(...))
    } else {
      mutationRequest.resolve({response: result.data});
    }
  });
}

See RelayMutationRequest for methods available on the argument object.

sendQueries

sendQueries(queryRequests: Array<RelayQueryRequest>): ?Promise

Implement this method to send queries to the server. For each query request, when the server response is received, this method must either call resolve with the response data, or reject with an Error object.

This method receives an array of queries (instead of a single query) in order to facilitate batching queries to improve network efficiency.

This method can optionally return a promise in order to facilitate proper error propagation.

Example

sendQueries(queryRequests) {
  return Promise.all(queryRequests.map(
    queryRequest => fetch(...).then(result => {
      if (result.errors) {
        queryRequest.reject(new Error(...));
      } else {
        queryRequest.resolve({response: result.data});
      }
    })
  ));
}

See RelayQueryRequest for methods available on the argument objects.

supports

supports(...options: Array<string>): boolean

Implement this method to return true when the supplied options are supported by this network layer. This is used to declare which features the network layer supports.

In the future, advanced capabilities in Relay may be dependent on the network layer being able to support certain features.

Example

supports(...options) {
  return options.every(option => {
    if (option === 'future-feature') {
      return true;
    }
    return false;
  });
}

© 2013–present Facebook Inc.
Licensed under the BSD License.
https://facebook.github.io/relay/docs/interfaces-relay-network-layer.html