要实现这个功能,可以在Apollo客户端库中定义一个hook函数,比如说在请求发送之前:
import apolloClient from './apolloClient';
// 定义一个hook函数 function checkServerObject(operation, forward) { // 判断操作类型是否为query if (operation.operationName === 'Query') { return forward(operation).map(response => { // 判断响应结果中是否有server字段,如果没有则表示不是来自服务器的数据 if (!response.data.server) { console.warn('Response is not from server'); } return response; }); } else { return forward(operation); } }
// 将hook函数加入Apollo客户端 apolloClient.link = ApolloLink.from([ checkServerObject, apolloClient.link, ]);
// 发送Apollo请求
apolloClient.query({
query: gql { user(id: 1) { name } }
,
});
通过定义这个hook函数,我们可以在发送请求之前判断操作类型是否为query,然后通过对响应结果中是否含有server字段进行判断,来判断其是否来自服务器。如果不是来自服务器,则可以输出警告信息。