Apollo-link-rest: 404 OK A resposta está retornando nulo em vez de um erro

Criado em 15 jul. 2019  ·  6Comentários  ·  Fonte: apollographql/apollo-link-rest


Recentemente, eu estava trabalhando em um projeto usando apollo-link-rest para tornar homogêneas as diferentes chamadas (para diferentes endpoints) que o aplicativo estava usando. Alguns pontos de extremidade são GraphQL, alguns outros descansam.

Um dos meus endpoints estava falhando porque o recurso que eu estava procurando não existia e, portanto, a busca estava retornando um 404. Mas desde # 119 & # 142 (https://github.com/apollographql/apollo-link-rest/blob /master/src/restLink.ts#L1047).

Por que faria sentido ocultar informações da resposta? Isso poderia ser feito em uma configuração baseada?

help wanted 🛠 question❔

Todos 6 comentários

Para muitas empresas, um 404 é um "erro não fatal" - significa apenas que algo está ausente. Freqüentemente, não há dados "extras" na resposta 404, portanto, retornar nulo parece ser o modelo que melhor se ajusta ao GraphQL. Com base nas discussões no nº 119 e fora dela, parecia que havia consenso de que esse era um resultado padrão mais doloroso, então a mudança foi feita.

Se ainda quiser fazer com que isso falhe, você pode escrever seu próprio invólucro customFetch que lançará um erro quando 404 ocorrer.

Obrigado @fbartho , acho que faz sentido. Acho que o problema em nosso caso é que nosso esquema parece muito REST-y, o que torna difícil trabalhar sem o 404. Seguirei e implementarei meu próprio customFetch. Obrigado!

Não acho que 404 erros devam ser tratados de forma diferente, eles ainda são um erro do cliente.

@kevinrobayna você conseguiu lidar com o erro 404? Eu tenho um requisito semelhante. Preciso lidar com um erro 404. Atualmente, o cliente Apollo está retornando dados nulos. enquanto vejo que é 404 no inspetor de rede.

@anasnain eu tive que lidar com isso no evento onCompleted :

onCompleted: (data) => {
  const token = data?.passwordRecoveryToken;
  // Apollo client sends null on 404 errors: https://github.com/apollographql/apollo-link-rest/issues/119
  if (!token) return handleEmailNotFound();

  return onGoToVerifyCode({ tokenId: token.id, email: inputs?.email?.value });
},

Eu coloquei um PR para restabelecer 404 como erros normais de rede, para coincidir com as boas práticas de API REST: https://github.com/apollographql/apollo-link-rest/pull/283

Esta página foi útil?
0 / 5 - 0 avaliações