2024. 11. 13. 16:13ใStudy_Develop/React Native
์๋ ํ์ธ์!
์ ๋ฒ ํฌ์คํ ์์
https://dlawlgus40.tistory.com/136
Capstone#4. Axios instance ์์ฑํ๊ธฐ / Axios interceptors
์๋ ํ์ธ์!์ค๋์ ๋ฒ์จ!! ์ ์ ์บก์คํค์ ์๊ฐํ๋ ๋ค ๋ฒ์งธ ์๊ฐ์ด๋ค์~~ ์.. ๋ค์ ๊ธ์ ์ํ๊ด๋ฆฌ๋ฅผ ํ ๊น... ํ๋ฉด ๊ตฌ์ฑํ๋ ๊ฑธ๋ก ํ ๊น..๋ญ๋ก ํ ๊น ํ๋ค๊ฐ.. ์ฐ์ ์ดํ์ด ๋ฑ ์ฒ์์ ์คํ๋์์ ๋
dlawlgus40.tistory.com
interceptors์ ๊ธฐ๋ฅ ์ค๋ช ํ๋ฉด์ ์ฝ๋๊ฐ ์ ๊น ๋์์์๋๋ฐ,
์ฌ๊ธฐ์
Axios.interceptors.request.use(async config => {
if (
config.headers.Authorization === '' ||
config.headers.Authorization === undefined
) {
const value = await AsyncStorage.getItem('AccessToken');
if (value) {
const accessToken = value;
if (accessToken) {
Axios.defaults.headers.common.Authorization = `Bearer ${accessToken}`;
config.headers.Authorization = `Bearer ${accessToken}`;
}
}
}
return config;
});
์ฌ๊ธฐ์ AsyncStorage๋ผ๋ ํค์๋๊ฐ ๋์ค์์์!
์ ๊ธฐ์ ๋์จ AccessToken์ Axios์ ํค๋์ ๊ณตํต์ผ๋ก ๋ฃ๋๋ค..??
๋ค๋ค AsyncStorage๊ฐ ๋ฌด์์ธ์ง ์ ํํ ์๊ณ ๊ณ์ ๊ฐ์~?
์น์ฌ์ดํธ์ LocalStorage์ ๋น์ทํ ๊ธฐ๋ฅ์ ํ๋๋ฐ
AsyncStorage๋ ์ํธํ ๋์ง ์์ ๋น๋๊ธฐ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ Key-Value ์ ์ฅ ์์คํ ์ ๋๋ค!
์ฑ์ ์ ์ญ์์ ์ฌ์ฉ๊ฐ๋ฅํด์.
AsyncStorage ์ฌ์ฉ ์ด์ ??
๋ถ๋ช ํ ์ฝ๋์ ์ผ์ผ๋ฉด ์ด๊ฑธ ์ฌ์ฉํ ์ด์ ๊ฐ ์์ ๊ฒ์ ๋๋ค!
์ ์ผ๋์ง ์์๋ด ์๋ค!
AsyncStorage๋ redux ๋ฑ์ ์ํ๊ด๋ฆฌ์ ๋ฌ๋ฆฌ ์ฑ์ ๋ซ๊ฑฐ๋ ๋ค์ ์์ํด๋ ์ ์ฅํ ๊ฐ์ด ์ ์ง๋๋ค๋
๋ฐ์ดํฐ ์ง์์ฑ ํน์ง์ด ์์ด์.
์ถ๊ฐ์ ์ผ๋ก ์คํ๋ผ์ธ์ ์ง์ํ๊ณ ํค-๊ฐ ์์ ์ํ ๊ฐ๋จํ API์ ๋๋ค!
๊ทธ๋์ ์ฌ์ฉ์ ์ธ์ ๋ฐ ์ธ์ฆ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ์ฃผ๋ก ์ฌ์ฉ์ด ๋ผ์.
์๋ฅผ ๋ค์ด, ๋ก๊ทธ์ธํ์ ๋ ๊ฑฐ๊ธฐ์ ๋์จ ํ ํฐ์ ์ ์ญ์ ๋ฏธ๋ฆฌ ์ ์ฅํด ๋๊ณ
์ ์ฅ๋ ๊ฐ์ด ์์ผ๋ฉด ๋ก๊ทธ์ธ์ ํ๋ค, ์์ผ๋ฉด ์ ํ๋ค๋ก ๊ตฌ๋ถ์ ํด์ฃผ๋ฉด ๋๋๊น์!
AsyncStorage ์ค์น
์์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ผ๋ ๊ณต์๋ฌธ์์์ ์ญ์ ๋์๋ค๊ณ ๋์ค๋ค์!
https://reactnative.directory/?search=storage
ํด๋น ์ปค๋ฎค๋ํฐ ํจํค์ง ์ค ํ๋๋ฅผ ์ฌ์ฉํ๋ผ๊ณ ๋์ค๋ค์!
npm install @react-native-async-storage/async-storage
or
yarn add @react-native-async-storage/async-storage
ํ๋ก์ ํธ ๋ด AsyncStorage ์ฌ์ฉ ๋ฐฉ๋ฒ
import {AsyncStorage} from 'react-native';
์ฐ์ ๊ฐ์ฅ ์ค์ํ import๋ฅผ ํด์ฃผ๊ณ ์!
์ ๋ ๋ก๊ทธ์ธ API๋ฅผ ์ฝํ ํ ์๋ต๋ฐ์ accessToken์
์ ์ฅ์์ setItem์ผ๋ก ์ ์ฅํด ๋์์ด์.
export const setAuthToken = async token => {
if (token) {
await AsyncStorage.setItem('AccessToken', token);
await AsyncStorage.setItem('RefreshToken', token.refresh);
Axios.defaults.headers.common.Authorization = `Bearer ${token}`;
} else {
await AsyncStorage.removeItem('AccessToken');
await AsyncStorage.removeItem('RefreshToken');
delete Axios.defaults.headers.common.Authorization;
}
};
์ด๋ฐ ์์ผ๋ก ์!
์ด๋ AccessToken์ด key๊ฐ์ด๊ณ token์ด value๊ฐ์ด ๋๊ฒ ์ฃ ?
removeItem์ AccessToken์ ์ ์ฅ๋ ๊ฐ์ ์ง์ฐ๋ผ๋ ๋ป์ ๋๋ค!
๋ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ผ๋ฉด ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ผ ํ๋๋ฐ
const value = await AsyncStorage.getItem('AccessToken');
์ด๋ ๊ฒ getItem์ผ๋ก AccessToken์ ์ ์ฅ๋ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์์ด์!
ํ๋ก์ ํธ ๋ด ๋ณธ์ธ์ด ์ํ๋ ๊ณณ์์ ํด๋น AccessToken์ ๊บผ๋ด์ ์ฌ์ฉํด ๋ณด์ธ์!
๊ทธ๋ผ ์๋ ~~ ๋ค์ํฌ์คํ ๋ ๋ด ์๋ค โค๏ธโค๏ธ