์ด์์ฌํญ
postTokenQuery(token)
.then((res) => {
console.log(res, '์ฟผ๋ฆฌ res');
if (res.data) {
setTokenInStorage(token);
}
})
.catch(() => toast.error('ํ ํฐ ์๋ฌ ๋ฐ์')); //์๋ฒ ์๋ต ์คํจ์ ์คํ ์๋จ
rtk query ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด์ ์๋ฒ์ ํต์ ํ๋๋ฐ ์๋ฒ์์ ๋ณด๋ด์ฃผ๋ ์๋ต์ ๋ฐ๋ผ
์ฑ๊ณตํ๋ฉด? .then ์ผ๋ก ํน์ ๋ก์ง์ ์คํํ๊ณ
์คํจํ๋ฉด? .catch ๋ก ํ ์คํธ๋ฅผ ๋์ฐ๋ ๋ก์ง์ด๋ค.
๊ทธ๋ฐ๋ฐ ์๋ฒ์ ์๋ต์ ์คํจํด๋, catch ๋ฌธ์ผ๋ก ๋์ด๊ฐ์ง ์๊ณ , then์์ ๊ฑธ๋ ค res ์๋ต์ ์ฝ์์ ๋์ฐ๋ ์ด์ํ ์ ์ด ๋ฐ๊ฒฌ๋์๋ค.
์ฑ๊ณต์ {data: {โฆ}} ๊ฐ ์ฝ์์ ์ฐํ๊ณ , ์คํจ์ {error: {...}}๊ฐ ์ฝ์์ ์ฐํ๋ ๊ฑธ ํ์ธํ์๋ค.
์์ธ
HTTP requests ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ ํ ์ ์๋๋ก ํ๋ fetchBaseQuery๋ฉ์๋๋ก ๊ธฐ๋ณธ baseQuery๋ฅผ ์ค์ ํ๋๋ฐ, fetchBaseQuery์ ๊ฒฐ๊ณผ๋ก Promise ๊ฒฐ๊ณผ ํ์ ์ ์๋์ ๊ฐ๋ค.
type FetchBaseQueryResult = Promise<
| {
data: any
error?: undefined
meta?: { request: Request; response: Response }
}
| {
error: {
status: number
data: any
}
data?: undefined
meta?: { request: Request; response: Response }
}
>
์์ ๊ฐ์ ํ์ ์ผ๋ก ์ ์๋์ด์๊ธฐ์, api ํธ์ถ์ด ์ฑ๊ณตํ๋ฉด, ์๋ฒ์์ ์ฃผ๋ ์๋ต payload body๊ฐ {data: {โฆ}} ํํ๋ก ์๋ต์ ์ฃผ๋ ๊ฒ์ด์๊ณ
์คํจํ๋ฉด, {error: {โฆ}} ํํ๋ก ์๋ต์ ์ฃผ๋ ๊ฒ์ด์๋ค.
๋ฐ๋ผ์ ์ฟผ๋ฆฌ๋ก ๋ฐ๋ response ํ์ ์ ์ฑ๊ณต SuccessType, ์คํจ ErrorType์ union type์ผ๋ก ์ง์ ํ์ฌ .then() ์ฒด์ธ ๋ด๋ถ์์ ์ฑ๊ณต์? ~~ ์คํจ์? ~~ ๋ฐ์ดํฐ๋ฅผ ์ผ์ผ์ด ํ์ ์ ๋ฐ๋ผ ๋ฐ์์์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์๋ค.
ํด๊ฒฐ
rtk query์ unwrap() ์ด๋ผ๋ ์ฒด์ธ์ ์ฌ์ฉํด์ ์ฑ๊ณต / ์คํจ์ payload๋ฅผ ๋ฐ๋ก ๋ฐ์์ฌ ์ ์๋ค.
postTokenQuery(token)
.unwrap()
.then((res: TokenResponseType) => {
console.log(res, '์ฟผ๋ฆฌ res');
setTokenInStorage(token);
})
.catch(() => toast.error('ํ ํฐ ์๋ฌ ๋ฐ์'));
์ด๋ ๊ฒ ์ ์ด์ฃผ๋ฉด ์๋ฒ ์๋ต ์ฑ๊ณต์ response์ ๋ฐ๋ก ์๋ต payload ๋ฐ๋๊ฐ ๋ด๊ธฐ๊ณ , ์๋ฌ๋ ์์ฐ์ค๋ฝ๊ฒ catch ๋ฌธ์์ ์กํ๋ค.
๊ณต์๋ฌธ์ ์ฐธ๊ณ
'React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ด์์ฌํญ
postTokenQuery(token) .then((res) => { console.log(res, '์ฟผ๋ฆฌ res'); if (res.data) { setTokenInStorage(token); } }) .catch(() => toast.error('ํ ํฐ ์๋ฌ ๋ฐ์')); //์๋ฒ ์๋ต ์คํจ์ ์คํ ์๋จ
rtk query ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด์ ์๋ฒ์ ํต์ ํ๋๋ฐ ์๋ฒ์์ ๋ณด๋ด์ฃผ๋ ์๋ต์ ๋ฐ๋ผ
์ฑ๊ณตํ๋ฉด? .then ์ผ๋ก ํน์ ๋ก์ง์ ์คํํ๊ณ
์คํจํ๋ฉด? .catch ๋ก ํ ์คํธ๋ฅผ ๋์ฐ๋ ๋ก์ง์ด๋ค.
๊ทธ๋ฐ๋ฐ ์๋ฒ์ ์๋ต์ ์คํจํด๋, catch ๋ฌธ์ผ๋ก ๋์ด๊ฐ์ง ์๊ณ , then์์ ๊ฑธ๋ ค res ์๋ต์ ์ฝ์์ ๋์ฐ๋ ์ด์ํ ์ ์ด ๋ฐ๊ฒฌ๋์๋ค.
์ฑ๊ณต์ {data: {โฆ}} ๊ฐ ์ฝ์์ ์ฐํ๊ณ , ์คํจ์ {error: {...}}๊ฐ ์ฝ์์ ์ฐํ๋ ๊ฑธ ํ์ธํ์๋ค.
์์ธ
HTTP requests ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ ํ ์ ์๋๋ก ํ๋ fetchBaseQuery๋ฉ์๋๋ก ๊ธฐ๋ณธ baseQuery๋ฅผ ์ค์ ํ๋๋ฐ, fetchBaseQuery์ ๊ฒฐ๊ณผ๋ก Promise ๊ฒฐ๊ณผ ํ์ ์ ์๋์ ๊ฐ๋ค.
type FetchBaseQueryResult = Promise< | { data: any error?: undefined meta?: { request: Request; response: Response } } | { error: { status: number data: any } data?: undefined meta?: { request: Request; response: Response } } >
์์ ๊ฐ์ ํ์ ์ผ๋ก ์ ์๋์ด์๊ธฐ์, api ํธ์ถ์ด ์ฑ๊ณตํ๋ฉด, ์๋ฒ์์ ์ฃผ๋ ์๋ต payload body๊ฐ {data: {โฆ}} ํํ๋ก ์๋ต์ ์ฃผ๋ ๊ฒ์ด์๊ณ
์คํจํ๋ฉด, {error: {โฆ}} ํํ๋ก ์๋ต์ ์ฃผ๋ ๊ฒ์ด์๋ค.
๋ฐ๋ผ์ ์ฟผ๋ฆฌ๋ก ๋ฐ๋ response ํ์ ์ ์ฑ๊ณต SuccessType, ์คํจ ErrorType์ union type์ผ๋ก ์ง์ ํ์ฌ .then() ์ฒด์ธ ๋ด๋ถ์์ ์ฑ๊ณต์? ~~ ์คํจ์? ~~ ๋ฐ์ดํฐ๋ฅผ ์ผ์ผ์ด ํ์ ์ ๋ฐ๋ผ ๋ฐ์์์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์๋ค.
ํด๊ฒฐ
rtk query์ unwrap() ์ด๋ผ๋ ์ฒด์ธ์ ์ฌ์ฉํด์ ์ฑ๊ณต / ์คํจ์ payload๋ฅผ ๋ฐ๋ก ๋ฐ์์ฌ ์ ์๋ค.
postTokenQuery(token) .unwrap() .then((res: TokenResponseType) => { console.log(res, '์ฟผ๋ฆฌ res'); setTokenInStorage(token); }) .catch(() => toast.error('ํ ํฐ ์๋ฌ ๋ฐ์'));
์ด๋ ๊ฒ ์ ์ด์ฃผ๋ฉด ์๋ฒ ์๋ต ์ฑ๊ณต์ response์ ๋ฐ๋ก ์๋ต payload ๋ฐ๋๊ฐ ๋ด๊ธฐ๊ณ , ์๋ฌ๋ ์์ฐ์ค๋ฝ๊ฒ catch ๋ฌธ์์ ์กํ๋ค.