Я использую graphql-server-express
для создания сервера GraphQL, который использует REST API.
Я нахожусь в ситуации, когда вызов REST может возвращать код состояния 301 или 401, когда пользователь не аутентифицирован для доступа к ресурсу. Я использую файл cookie, который устанавливается на клиенте и пересылается в REST API при разрешении запроса GraphQL.
Можно ли отправить клиенту перенаправление 301 в ответ на вызов конечной точки GraphQL при возникновении такой ошибки?
Я пробовал что-то вроде res.sendStatus(301) …
в formatError
, но это не работает, поскольку graphql-server-express
пытается установить заголовки после этого.
Я также попытался замкнуть промежуточное ПО graphqlExpress
чем-то вроде этого:
export default graphqlExpress((req, res) => {
res.sendStatus(301);
return;
});
Хотя клиент получает правильный результат, сервер по-прежнему выводит ошибки (в данном случае TypeError: Cannot read property 'formatError' of undefined
- скорее всего, потому, что промежуточное ПО получает пустые параметры).
Есть ли хороший способ заставить это работать? Спасибо!
fetch
просто следует за перенаправлением и загрузит этот ресурс. Так что, вероятно, лучший способ - это, как вы упомянули, генерировать пользовательскую ошибку перенаправления в моем преобразователе, которую клиент знает, как обрабатывать - возможно, с помощью apollo client afterware (в связанном примере они фактически используют код состояния ответа для реакции на выход из системы) - person amann   schedule 23.12.2016