Custom network layers that must conform to the RelayNetworkLayer
interface.
Methods
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.
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(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.
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(...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.
supports(...options) { return options.every(option => { if (option === 'future-feature') { return true; } return false; }); }