NEXTJS 영화 API로 DATA 가져오기

2022. 6. 4. 02:41· Web dev/Next.js
목차
  1. 영화 DATA를 가져온 사이트 (TMDB)
  2. 리액트앱과 다른 것?
  3. fetch 함수
반응형

영화 DATA를 가져온 사이트 (TMDB)

노마드 코더 next.js 강의를 들으며 알게된 사이트인데 기본적으로 API 구성이 잘 되어있어서 내가 원하는 데이터를 어렵지 않게 받아올 수 있는 것 같다. 나는 이곳에서 영화 데이터를 받아오기 위해 API 키 발급 신청을 했고, 신청 후 즉시 API 키가 발급된 것을 알 수 있었다. 지금부터는 받아온 API KEY를 이용해 NEXTJS 프로젝트에 data를 심어줘볼 것이다.

리액트앱과 다른 것?

사실상 데이터를 받아와서 화면에 그려주는 것은 리액트에서와 다를 것이 없었던 것 같다. 똑같이 화면이 렌더링될 때 내가 받아오고자하는 데이터를 요청하면 되는 것이었는데 이번에 처음으로 fetch함수를 이용해봤다.

먼저, 발급한 API KEY를 변수로 선언해주고 가져온 데이터를 담을 state를 만들어주었다. 그 후에 useEffect를 이용하여 요청을 보냈는데 데이터를 요청하니 console에 원하는 정보가 찍히는 것을 볼 수 있었다. 콘솔에 데이터가 제대로 들어오는지 확인한 후 setState를 이용해 state의 상태를 바꿔주었는데, 그렇게 movie정보를 movie라는 state에 담을 수 있었다.

import Seo from "../components/Seo";
import { useState, useEffect } from "react";

const API_KEY = "여기에 발급한 api키 입력";

export default function Home() {
  const [movies, setMovies] = useState([])

  useEffect(() => {
    (async () => {
      const data = await (await fetch(
        `https://api.themoviedb.org/3/movie/popular?api_key=${API_KEY}`
      )).json();
        setMovies(data.results)
    })();

  }, [])
  return (
    <div>
      <Seo title='HOME' />
      {!movies && <h4>Loading...</h4>}
      {movies?.map(movie => <div key={movie.id}>
        <h4>{movie.original_title}</h4>
      </div>)}
    </div>
  );
}

그 후, state에 담긴 배열의 리스트를 map함수를 이용해 화면에 그려줬는데 내가 그리고자 했던 정보는 영화의 제목이었다. 그래서 영화 제목을 꺼내와 map을 돌려 화면에 그려주는 것까지 처리했다.

여기까지 작업한 것을 봤을 때는 리액트에서 하던 방식과 크게 다를 것이 없었고, 크게 어려운 것도 없었다. 기존에 axios를 이용해 비동기요청을 처리하던 방식을 fetch함수로 적용했다는 것만 달랐을뿐이다.

fetch 함수

fetch함수는 서버에 비동기 요청을 할 수 있도록 만들어주는 함수인데 자바스크립트의 내장 라이브러리이다. 즉, HTTP 요청 전송 기능을 제공하는 Web API라고 할 수 있는데 fetch() 함수를 이용하거나 기존에 사용했던 axios 라이브러리를 사용해 비동기 요청을 처리할 수 있다.

//
fetch('api주소')
  .then( res => res.json())
  .then( res => {
    // data를 응답받은 후의 로직
  );

// error 캐치
fetch('api 주소')
  .then(res => {
    console.log(res)
  })
  .catch(error => {
    console.log(error)
  })

 

반응형
저작자표시 비영리 동일조건 (새창열림)
  1. 영화 DATA를 가져온 사이트 (TMDB)
  2. 리액트앱과 다른 것?
  3. fetch 함수
'Web dev/Next.js' 카테고리의 다른 글
  • Next.js 서버 사이드 렌더링(SSR), 클라이언트 사이드 렌더링(CSR)과의 차이
  • Next.js의 장점 Redirect와 Rewrite(url 숨기기)
  • Next.js style 적용은 어떻게 할까?
  • Next.js란? 프로젝트 시작하기
도잎
도잎
프론트엔드 개발 성장기록
도잎
JDevelog
도잎
전체
오늘
어제
반응형
  • 분류 전체보기 (149)
    • Web dev (48)
      • React (22)
      • Vue (8)
      • Next.js (6)
      • Node.js (2)
      • Springboot (2)
    • App dev (2)
      • Flutter (2)
    • Language (33)
      • javascript (30)
      • typescript (2)
      • java (1)
    • StyleSeet (3)
      • CSS (3)
      • Sass (0)
    • Database (2)
      • PostgreSQL (1)
    • DevOps (11)
      • Webpack (4)
      • Linux (3)
      • Docker (2)
      • Tomcat (1)
    • 개발지식 (2)
      • Web (1)
    • 항해99(6기) (20)
    • UXUI (0)
    • 알고리즘 (25)
    • 유용정보 (2)

최근 글

hELLO · Designed By 정상우.v4.2.1
도잎
NEXTJS 영화 API로 DATA 가져오기
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.