Skip to content

Instantly share code, notes, and snippets.

@Jonghakseo
Created November 27, 2023 02:01
Show Gist options
  • Save Jonghakseo/f6b45d2c293ad7c0d423c7729220cdc8 to your computer and use it in GitHub Desktop.
Save Jonghakseo/f6b45d2c293ad7c0d423c7729220cdc8 to your computer and use it in GitHub Desktop.
Note-for.me

스크린샷 2023-11-26 오전 1.19.38.png

에러 정책을 ignore로 했을 때에도 에러가 발생. onError가 실행됨을 확인

스크린샷 2023-11-26 오전 1.19.43.png

onError를 넣어주지 않으면,

스크린샷 2023-11-26 오전 1.19.54.png

unhandled exception 발생 스크린샷 2023-11-26 오전 1.19.59.png

원인을 확인해보니, 아폴로 클라이언트의 에러 처리 코드에서 fetch에 대한 catch 처리시에는 ignore errorPolicy에 대한 반영이 되어있지 않음을 확인

스크린샷 2023-11-26 오전 2.05.52.png

아폴로 공식문서에는 오류 유형을 Graphql에러와 네트워크 오류로 나누고 있는데, 아폴로 에러(200과 함께 에러 필드로 넘어오는 에러)가 아닌 네트워크 에러의 경우에는 에러 정책으로 처리하지 않고 에러 객체의 networkError 필드에 해당 정보를 넘기는 방식을 사용. (테스트 결과 쿼리도 마찬가지)

서버에서 bad request에 대한 400 응답이 아닌 200응답으로 처리하거나, errorPolicy: ignore 대신에 onError를 붙여줘야 함. (실제 아폴로 V4부터 invalid variables에 대한 응답으로 200을 반환하도록 권장되었음)

apollographql/apollo-server#7460

https://www.apollographql.com/docs/apollo-server/data/errors/#setting-http-status-code-and-headers

서버 아폴로 버전은 현재 3.12.1이어서 올리기 어려울 것으로 예상...? 플러그인 등의 방식으로 bad user input 에 대한 응답 코드를 200으로 바꿀 수 있는지 확인 필요.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment