TMDB API로 영화 카드리스트 만들기 - 1일차 진행기

영화는 언제나 많은 사람들에게 흥미로운 주제입니다. 특히, 영화를 사랑하는 사람이라면 언제 어디서든 영화를 검색하고 정보를 얻을 수 있는 플랫폼이 필요할 것입니다.

이번 글에서는 TMDB API를 활용하여 영화 카드리스트를 만드는 과정을 소개하겠습니다. 이 프로젝트는 영화 정보를 수집하고, 이를 카드 형태로 보여주는 웹 애플리케이션을 만드는 것을 목표로 합니다.

첫 번째 날에는 TMDB API 발급과 기본적인 카드리스트 UI를 구현하는 데 중점을 두었습니다.

TMDB API 발급받기

TMDB(The Movie Database)는 영화 및 TV 프로그램에 대한 정보를 제공하는 오픈 소스 데이터베이스입니다. TMDB API를 사용하면 사용자들은 프로그램적으로 영화 정보를 검색하고, 해당 정보를 표시할 수 있습니다.

프로젝트의 첫 번째 단계는 TMDB API 키를 발급받는 것입니다.

  1. 회원가입 및 로그인: TMDB 웹사이트에 접속하여 회원가입을 진행합니다. 회원가입 후에는 로그인하여 자신의 계정으로 이동합니다.

  2. API 키 요청: 로그인을 마친 후, API 섹션으로 이동하여 새로운 API 키를 요청합니다. 필요한 정보를 입력하고, 사용 목적을 설명하는 간단한 양식이 있습니다. 요청이 승인되면 이메일로 API 키가 발송됩니다.

  3. API 키 저장: 발급받은 API 키는 프로젝트에서 영화 데이터를 요청할 때 필요하므로 안전한 장소에 저장합니다.

아래 표는 TMDB API를 활용하기 위해 필요한 주요 정보입니다.

항목 내용
TMDB 사이트 The Movie Database
API 키 발급 방법 회원가입 후 API 섹션에서 요청
사용 용도 영화 및 TV 프로그램 정보 검색

다른 내용도 보러가기 #1

카드리스트 UI 구현

TMDB API에서 발급받은 API 키를 사용하여 영화 정보를 가져오고, 이를 카드 형태로 보여주는 UI를 구현해야 합니다. 이 단계에서는 HTML, CSS, 그리고 JavaScript를 사용하여 기본적인 뼈대와 스타일을 만들어봅니다.

HTML 뼈대

HTML은 웹 페이지의 구조를 정의합니다. 영화 카드리스트의 기본 구조를 다음과 같이 설정할 수 있습니다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>영화 카드리스트</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <header>
        <h1>영화 카드리스트</h1>
    </header>
    <main>
        <section id="movie-list">
            <!-- 영화 카드가 동적으로 삽입될 영역 -->
        </section>
    </main>
    <script src="script.js"></script>
</body>
</html>

위 코드에서 #movie-list라는 ID를 가진 섹션은 영화 카드가 동적으로 삽입될 영역입니다. 이 구조는 매우 기본적이지만, 이후 JavaScript를 통해 영화 데이터를 가져와 여기서 카드 형태로 보여줄 것입니다.

CSS 스타일링

HTML 구조가 준비되었으니, 이제 CSS를 사용하여 디자인을 적용합니다. 아래는 카드 스타일을 정의하는 기본적인 CSS 코드입니다.

body {
    font-family: Arial, sans-serif;
    background-color: #f4f4f4;
    margin: 0;
    padding: 0;
}

header {
    background: #35424a;
    color: #ffffff;
    padding: 20px;
    text-align: center;
}

#movie-list {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    padding: 20px;
}

.movie-card {
    background: #ffffff;
    border: 1px solid #ddd;
    border-radius: 5px;
    margin: 10px;
    padding: 15px;
    width: 200px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}

.movie-card img {
    width: 100%;
    border-radius: 5px 5px 0 0;
}

.movie-card h3 {
    font-size: 1.2em;
    margin: 10px 0;
}

위 CSS 코드는 영화 카드의 기본적인 레이아웃과 스타일을 정의합니다. display: flex를 사용하여 카드들이 가로로 나열되도록 하였으며, 카드 내부의 이미지, 제목 등의 요소에 대한 스타일을 적용하였습니다.

아래 표는 카드 UI 디자인에 대한 정보를 정리한 것입니다.

요소 내용
카드 배경색 흰색(#ffffff)
카드 테두리 1px 실선 테두리
카드 그림자 0 2px 5px rgba(0,0,0,0.1)
카드 제목 1.2em 폰트 크기, 마진 10px

JavaScript로 데이터 가져오기

HTML과 CSS가 준비되었으니, 이제 JavaScript를 통해 TMDB API로부터 영화 데이터를 가져오는 로직을 구현합니다. API 키를 사용하여 영화 목록을 요청하고, 응답으로 받은 데이터를 카드 형태로 변환하여 UI에 표시하는 과정을 설명합니다.

데이터 요청

다음과 같은 JavaScript 코드를 사용하여 TMDB API로 영화 데이터를 요청합니다.

const apiKey = 'YOUR_API_KEY'; // 발급받은 API 키
const movieListElement = document.getElementById('movie-list');

async function fetchMovies() {
    const response = await fetch(`https://api.themoviedb.org/3/movie/popular?api_key=${apiKey}&language=ko-KR&page=1`);
    const data = await response.json();
    displayMovies(data.results);
}

function displayMovies(movies) {
    movies.forEach(movie => {
        const movieCard = document.createElement('div');
        movieCard.className = 'movie-card';

        movieCard.innerHTML = `
            <img src="https://image.tmdb.org/t/p/w500${movie.poster_path}" alt="${movie.title}">
            <h3>${movie.title}</h3>
            <p>${movie.release_date}</p>
        `;

        movieListElement.appendChild(movieCard);
    });
}

// 페이지가 로드될 때 영화 목록을 가져옵니다.
window.onload = fetchMovies;

위 코드는 영화 데이터 요청을 위한 함수를 정의합니다. fetchMovies 함수는 TMDB API에 요청을 보내고, 응답으로 받은 데이터를 displayMovies 함수에 전달하여 각 영화에 대한 카드 정보를 생성합니다.

아래 표는 JavaScript로 구현된 데이터 요청 및 처리에 대한 정보를 정리한 것입니다.

함수명 설명
fetchMovies TMDB API로부터 인기 영화 목록 요청
displayMovies 영화 목록을 카드 형태로 UI에 표시
window.onload 페이지 로드 시 fetchMovies 호출

다른 내용도 보러가기 #2

결론

1일차 진행기에서는 TMDB API를 통해 영화 정보를 가져오는 웹 애플리케이션의 기본 구조를 설정하였습니다. API 키를 발급받고, HTML, CSS를 사용하여 카드리스트 UI를 구현하며, JavaScript를 통해 API로부터 데이터를 가져와 카드 형태로 표시하는 과정을 진행했습니다.

다음 단계에서는 영화 검색 기능을 추가하고, 더 많은 사용자 인터페이스를 개선할 계획입니다. 영화 애호가를 위한 유용한 플랫폼이 될 수 있도록 지속적으로 발전시키겠습니다.

관련 영상

댓글

이 블로그의 인기 게시물

단식 후 필수 보식 식단 완벽 가이드

중등산화와 경등산화 비교 최고의 선택은?

현지인이 추천하는 도쿄 클럽 핫플레이스!