Axios 인스턴스 생성

이정민·2023년 5월 3일
1

Axios 인스턴스화 하는 이유?

중복된 부분을 계속 입력하지 않아도 되기 때문

Axios 인스턴스 만드는 순서

1.src폴더 하위에 인스턴스 생성할 폴더 파일 생성
2.axios.js 파일 생성

import axios from "axios";

const instance = axios.create({
  baseURL: 
  params: {
    api_key: 
    language: "ko-KR",
  },
});

export default instance;

!!!이 때 주의할 점은 api키의 경우 그대로 깃허브에 올리게 되면 탈취 해킹될 수 있기 때문에 .env파일로 따로 빼주어.gitignore파일에 추가 해주어야 한다.

api 키를 숨기는 방법

1. 루트 폴더에 .env 파일 생성

2. .env 파일에 내용 입력

REACT_APP_API_KEY=api key 

REACT_APP으로 시작하여야 한다.

3. .gitignore 파일에 .env 파일 추가

4. API key가 필요한 파일에서 변수에 저장해서 사용

const API_KEY = process.env.REACT_APP_API_KEY;

인스턴스화된 axios를 사용하기 위해서는

import axios from "axios";

가 아닌

import axios from "인스턴스를 저장한 파일";

로 불러와야한다.

사용예시

import axios from "axios";
const API_KEY = process.env.REACT_APP_API_KEY;
const baseURL = process.env.REACT_APP_BaseURL;

const instance = axios.create({
  baseURL: baseURL,
  params: {
    api_key: API_KEY,
    language: "ko-KR",
  },
});

export default instance;

"../api/axios"

const requests = {
  fetchNowPlaying: "/movie/now_playing",
  fetchTrending: "/trending/all/week",
  fetchTopRated: "/movie/top_rating",
  fetchActionMovies: "/discover/movie?with_genres=28",
  fetchComedyMovies: "/discover/movie?with_genres=35",
  fetchHorrorMovies: "/discover/movie?with_genres=27",
  fetchRomanceMovies: "/discover/movie?with_genres=10749",
  fetchDocumentMovies: "/discover/movie?with_genres=99",
};

export default requests;

"../api/requests"

import axios from "../api/axios"; !!중요!!
import React, { useEffect, useState } from "react";
import requests from "../api/request";

const Banner = () => {
  const [movie, setMovie] = useState([]);

  useEffect(() => {
    fetchData();
  });
  const fetchData = async () => {
    const request = await axios.get(requests.fetchNowPlaying);
    console.log(request);
  };
  return <div>Banner</div>;
};

export default Banner;

0개의 댓글