Я хотел бы прочитать заголовок ответа с помощью Apollo Client, но не могу.
Я использую сервер Apollo и клиент Apollo для обмена данными с API GraphQL и хотел бы отправлять заголовки туда и обратно.Я настроил клиент так, чтобы он отправлял заголовок x-client-version, и я настроил сервер так, чтобы он также иногда отвечал тем же заголовком.
Проблема заключается в том, что при попытке прочитатьзаголовок x-client-version (или любой другой заголовок) с клиентом Apollo, я получаю неопределенный.Ниже я настроил некоторые Afterware, основываясь на примерах, которые я нашел в Интернете, и даже пошаговых руководствах YouTube:
const clientVersionAfterware = new ApolloLink((operation, forward) =>
forward(operation).map(response => {
const {
response: { headers },
} = operation.getContext();
console.log(headers);
if (headers) {
const token = headers.get("x-client-version");
console.log(token);
if (token) {
localStorage.setItem("clientVersion", token);
}
}
return response;
}),
);
Прикрепите его к цепочке ссылок:
const httpLink = handleErrors.concat(
clientVersionAfterware.concat(new HttpLink(linkOptions)),
);
const batchHttpLink = handleErrors.concat(
clientVersionAfterware.concat(
new BatchHttpLink({ ...linkOptions, batchInterval: 10 }),
),
);
В конечном счете, подключение ссылок вКонструктор ApolloClient:
new ApolloClient({
link: split(
({ operationName = "" }) => operationName.startsWith("findOrCreate"),
httpLink,
batchHttpLink,
),
cache,
...opts,
});
Я слышал, что объект заголовков пуст, но заголовки все еще можно прочитать, но это определенно не так в моем опыте.Я вижу, что сервер действительно возвращает заголовок x-client-version
, который я ожидаю прочитать:
Я подумал, что, возможно, обновление моих пакетов поможет, но они этого не сделали.Версии, которые я использую:
"apollo-cache-inmemory": "^1.5.1",
"apollo-client": "^2.5.1",
"apollo-link-batch-http": "^1.2.4",
"apollo-link-error": "^1.1.2",
"apollo-link-http": "^1.5.11",
Что-то мне не хватает?Заранее спасибо!