Axios를 사용하는 이유
1. 더 많은 기능을 제공함 (timeout, baseUrl 등등)
2. 사람들이 더 많이 사용함
3. 백엔드 nodeJS에서는 fetch를 사용할 수 없음
4. 단점은 설치해야한다 뿐임
axios를 사용하게 된다면 상당히 깔끔해진다
import api from "../api"
const API_KEY=process.env.REACT_APP_API_KEY
function getMovies(){
return async (dispatch)=>{
const popularMovieApi = await api.get(`movie/popular?api_key=${API_KEY}&language=en-US&page=1`)
}}
export const movieActions = {
getMovies
}
단, 깔끔하게 사용하기위해서 어디서든 간단하게 불러올수 있도록 api파일을 만들어둬야한다.
import axios from "axios"
const api = axios.create({
baseURL:"https://api.themoviedb.org/3/",
headers:{"Content-type":"application/json"}
})
// 요청 인터셉터 추가하기
api.interceptors.request.use(function (config) {
// 요청이 전달되기 전에 작업 수행
console.log("request start",config)
return config;
}, function (error) {
// 요청 오류가 있는 작업 수행
console.log("request error",error)
return Promise.reject(error);
});
// 응답 인터셉터 추가하기
api.interceptors.response.use(function (response) {
// 2xx 범위에 있는 상태 코드는 이 함수를 트리거 합니다.
// 응답 데이터가 있는 작업 수행
console.log("get response",response)
return response;
}, function (error) {
// 2xx 외의 범위에 있는 상태 코드는 이 함수를 트리거 합니다.
// 응답 오류가 있는 작업 수행
console.log("response error",error)
return Promise.reject(error);
});
export default api;
추가)
API통신시 API 키는 공개적인곳에 올리면 안된다.
안전하게 보호하기 위해서 환경설정 형식인 env파일에 설정하고, gitignore파일에 추가하여 깃허브에 올리지 않아야 한다.
REACT_APP_API_KEY=a04d1fe3abf6087a##########################
env파일 작성시 띄어쓰기 금지!!
'잼무비' 카테고리의 다른 글
Part4 로딩 스피너 제작하기 (0) | 2022.11.28 |
---|---|
Part 3 화면에 출력하기 (조건부렌더링) (0) | 2022.11.23 |
Part2-3 리덕스 연결하기 (0) | 2022.11.23 |
Part 2-2 Axios 병렬요청하기 (feat. Promise.all) (0) | 2022.11.22 |
Part 1. 잼무비 개발설정 (0) | 2022.11.22 |