axios를 모듈화하여 사용해보자!

Updated:

Axios를 프로젝트에서 사용하기

네트워킹을 이용할 때 먼저 src에 api 폴더를 만들어 주자

  • 각 라우팅에 fetch를 사용하는 것은 비효율 적이니 src 폴더에 api.js를 만들어 주자
  • axios.create()를 사용하여 공통적으로 사용되는 키밸류를 넣어준다.
  • api.js 를 만드는 이유는 공통적으로 사용하는 코드를 줄여주기 위함
import axios from 'axios'

const api = axios.create({
	baseURL : '해당 api url',
	//쿼리로 넘길 키들을 prams 객체에 키밸류로 순서대로 넣어준다.
	params : {
		api_key : '받은 api',
		laguage : '밸류'
	}
})

export default api

각 성질에 맞는 코드를 작성하자.

  • axios.create() 를 사용하여 공통적으로 사용되는 부분을 정리 했으면 “각 컴포넌트 별로 맞는 공통 코드를 작성할 수 있다.
  • 아래 코드는 예를 들어, url이 공통적으로 movie로 시작하거나 tv로 시작하는 url 구분으로 정리된 코드다 한번 살펴보자
// api.get('해당 url') => 아래를 보다싶이 첫글자에 "/"가 들어가지 않는다.
//그 이유는 /을 넣으면 절대 경로가 되면서 baseUrl을 덮어쓰게 되기 때문이다.

export const moviesApi = {
  nowPlaying : () => api.get('movie/now_playing'),
  upcoming : () => api.get('movie/upcoming'),
  popular : () => api.get('movie/popular'),
  
	// 상위 3개의 코드와는 다르게 prams라는 key가 추가되었는데 이는, detail은 쿼리가 붙기 때문이다.
	movieDetail : (id) => api.get(`movie/${id}`,{
    params : {
      append_to_response : "videos"
    }
  }),

  // 첫번째 인자 url 두번째에 쿼리 prams를 넘겨준다.
  searchMovie : (terms) => api.get(`search/movie`,{
    params : {
      query : terms
    }
  })
}

export const tvApi = {
  topRated : () => api.get('tv/top_rated'),
  popular : () => api.get('tv/popular'),
  airingToday : () => api.get('tv/airing_today'),
  showDetail : id => api.get(`tv/${id}`,{
    params : {
      append_to_response : "tv"
    }
  }),

  searchTv : (terms) => api.get(`search/tv`,{
    params : {
      query : terms
    }
  })
}
// 또 다른 예시
import axios from 'axios';

export const customAxios = axios.create({
  baseURL: process.env.REACT_APP_API_URL,
});

export const initRenderApi = {
  list: () => customAxios.get(`/youtube/v3/videos?part=snippet&chart=mostPopular&maxResults=25&key=${process.env.REACT_APP_API_KEY}`),
  search: text => customAxios.get(`/youtube/v3/search?part=snippet&type=video&maxResults=10&q=${text}&key=${process.env.REACT_APP_API_KEY}`),
};

// 위 코드의 search 사용에 대한 예시
const response = await initRenderApi.search(query);

해당 프로젝트에서 사용하기

  • 공통 코드로 구축이 되어있는 상태다. 이제 실제 컴포넌트에서 공통 모듈로 빼 둔 해당 코드들을 불러와서 사용해 보자.
const response = await moviesApi.nowPlaying()

위 코드를 보면 moviesApi를 import를 하였고 moviesApi는 객체이며 nowPlaying은 밸류가 함수로 이뤄져 있기에 호출을 하는 형태로 되어있다.

### 참고

  • 노마드 코더

Tags:

Categories:

Updated: