你可以使用apollo-link的setContext来实现将所有标题转换为小写的功能。setContext允许你在每个请求之前修改上下文,你可以在这个过程中修改请求的标题。
以下是一个示例代码:
import { setContext } from 'apollo-link-context';
const lowerCaseHeadersLink = setContext((_, { headers }) => {
// 将所有标题转换为小写
const lowerCaseHeaders = {};
Object.keys(headers).forEach(key => {
lowerCaseHeaders[key.toLowerCase()] = headers[key];
});
return {
headers: lowerCaseHeaders,
};
});
const link = ApolloLink.from([
lowerCaseHeadersLink,
// 其他链接
]);
const client = new ApolloClient({
// 配置
link: link,
// 其他配置
});
在上面的代码中,我们创建了一个名为lowerCaseHeadersLink的setContext链接。在该链接中,我们使用Object.keys和forEach循环遍历headers对象的所有键,并将它们转换为小写,然后将转换后的标题存储在lowerCaseHeaders对象中。
最后,我们将lowerCaseHeaders对象返回,以便它可以成为新的上下文的一部分,并在每个请求中使用转换后的标题。
请确保在创建ApolloClient实例时将lowerCaseHeadersLink添加到链接链中,以便它在每个请求之前都能被调用。