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?
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