例如,我们可以在响应返回后,对数据进行解密操作:
import { ApolloLink, Observable } from 'apollo-link';
const decryptTransform = new ApolloLink((operation, forward) => {
return new Observable(observer => {
forward(operation).subscribe({
next: response => {
const decryptedData = decrypt(response.data);
observer.next({ ...response, data: decryptedData});
},
error: error => {
observer.error(error);
},
complete: () => {
observer.complete();
}
});
});
});
const link = decryptTransform.concat(httpLink);
import { ApolloClient } from 'apollo-client';
import { InMemoryCache } from 'apollo-cache-inmemory';
const client = new ApolloClient({
link,
cache: new InMemoryCache(),
resolvers: {},
typeDefs: {}
});
这样,当Apollo-Client执行查询时,会先经过decryptTransform的转换操作,然后再将响应返回给代码。