์ต๊ทผ์ ์ ๋ ์ฑ์ด ์ฌ์ฉํ๋ ๋ค์ํ ํธ์ถ (๋ค๋ฅธ ์๋ ํฌ์ธํธ์ ๋ํ)์ ๋์ข
์ผ๋ก ๋ง๋ค๊ธฐ ์ํด apollo-link-rest๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์์ ์์
ํ๊ณ ์์์ต๋๋ค. ์ผ๋ถ ์๋ ํฌ์ธํธ๋ GraphQL์ด๊ณ ๋๋จธ์ง๋ ๋๋จธ์ง์
๋๋ค.
๋ด๊ฐ ์ฐพ๊ณ ์๋ ๋ฆฌ์์ค๊ฐ ์กด์ฌํ์ง ์์์ ๊ฐ์ ธ ์ค๊ธฐ๊ฐ 404๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๋ด ์๋ ํฌ์ธํธ ์ค ํ๋๊ฐ ์คํจํ์ต๋๋ค.ํ์ง๋ง # 119 & # 142 (https://github.com/apollographql/apollo-link-rest/blob /master/src/restLink.ts#L1047).
์๋ต์์ ์ ๋ณด๋ฅผ ์จ๊ธฐ๋ ๊ฒ์ด ์ ํฉ๋ฆฌ์ ์ ๋๊น? ์ด๊ฒ์ ๊ตฌ์ฑ ๊ธฐ๋ฐ์ผ๋ก ์ํ ๋ ์ ์์ต๋๊น?
๋ง์ ํ์ฌ์์ 404๋ "์น๋ช ์ ์ด์ง ์์ ์ค๋ฅ"์ ๋๋ค. ์ด๋ ๋จ์ง ๋ฌด์ธ๊ฐ๊ฐ ์์์ ์๋ฏธํฉ๋๋ค. 404 ์๋ต์ "์ถ๊ฐ"๋ฐ์ดํฐ๊ฐ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก null์ ๋ฐํํ๋ ๊ฒ์ด GraphQL์ ๊ฐ์ฅ ์ ํฉํ ๋ชจ๋ธ์ฒ๋ผ ๋ณด์์ต๋๋ค. # 119์ ์ธ๋ถ์์ ๋ ผ์ํ ๋ฐ์ ๋ฐ๋ฅด๋ฉด ์ด๊ฒ์ด ๋ ๊ณ ํต์ค๋ฌ์ด ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ๋ค๋ ํฉ์๊ฐ์๋ ๊ฒ ๊ฐ์์ ๋ณ๊ฒฝ์ด ์ด๋ฃจ์ด์ก์ต๋๋ค.
๊ทธ๋๋ ์คํจ๋ฅผ ์ผ์ผํค๊ณ ์ถ๋ค๋ฉด 404๊ฐ ๋ฐ์ํ ๋ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๋ ์์ฒด customFetch
๋ํผ ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค @fbartho ๋๋ ๊ทธ๊ฒ์ด ์๋ฏธ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ๋ฌธ์ ๋ ์์ ์คํค๋ง๊ฐ ๋งค์ฐ REST-y๋ก ๋ณด์ด๊ธฐ ๋๋ฌธ์ 404์์ด ์์ ํ๊ธฐ๊ฐ ์ด๋ ต๋ค๋ ๊ฒ์ ๋๋ค. ๊ณ์ํด์ ๋ด customFetch๋ฅผ ๊ตฌํํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌ!
404
์ค๋ฅ๋ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌ๋์ด์ผํ๋ค๊ณ ์๊ฐํ์ง ์์ง๋ง ์ฌ์ ํ ํด๋ผ์ด์ธํธ ์ค๋ฅ์
๋๋ค.
@kevinrobayna 404 ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌ ํ ์ โโ์์์ต๋๊น? ๋น์ทํ ์๊ตฌ ์ฌํญ์ด ์์ต๋๋ค. 404 ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํด์ผํฉ๋๋ค. ํ์ฌ ์ํด๋ก ํด๋ผ์ด์ธํธ๋ null ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๊ณ ์์ต๋๋ค. ๋คํธ์ํฌ ๊ฒ์ฌ๊ธฐ์์๋ 404๋ก ํ์๋ฉ๋๋ค.
@anasnain 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 });
},
์ข์ REST API ๊ดํ๊ณผ ์ผ์นํ๋๋ก 404๋ฅผ ์ ์์ ์ธ ๋คํธ์ํฌ ์ค๋ฅ๋ก ๋ณต์ํ๋ PR์ ์ฌ๋ ธ์ต๋๋ค. https://github.com/apollographql/apollo-link-rest/pull/283