평일동안 수업을 듣고 주말인 오늘에서야 개인 과제를 시작했다.
오픈 api, TMDB와 연동해서 영화 순위 사이트를 만드는 과제이다.
정말.. 막막했고 감이 안 잡혔다.
우선 큰 틀을 잡아주었다. 정말 큰 틀..
const options = {
method: 'GET',
headers: {
accept: 'application/json',
Authorization: '...'
}
};
fetch('https://api.themoviedb.org/3/movie/top_rated?language=ko-KR&page=1', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
필수사항 2번 가이드 라인을 보고 가지고 와서 script
부분에 넣어주었다.
.then(response => console.log(response))
부분 때문에 console부분에 찍히나 보다.
.then((response) => response.json())
.then((response) => {
let results = response["results"];
for (let i = 0; i < results.length; i++) {
let movie = results[i];
let title = movie["title"];
let overview = movie["overview"];
let vote_average = movie["vote_average"];
let imagesrc = `https://image.tmdb.org/t/p/w300/${movie["poster_path"]}`;
let id = movie["id"];
왕초보 강의를 따라 forEach문을 복붙했다가 for 문 연습할 겸 바꿔서 짜보았다.
API의 results는 20개의 배열이기 때문에 범위를 i < results.length
로 설정해주었다. results 내의 배열을 구석구석 돌면서 내가 필요한 title, overview, vote_average, imagesrc, id
요소들만 가지고 와주도록 해주었다!
또, 이미지도 따와야하기 때문에 필수 요구사항에 기재된 image url 은 base url + file size + poster_path로 구성 되어 있다 라는걸 보고 ${movie["poster_path"]
를 붙여주었다.
let cardTemp = `
<div class="movie-card" id="${id}">
<img src="${imagesrc}" alt="${title}">
<ul>
<li>제목: ${title}</li>
<li>내용 요약: ${overview}</li>
<li>평점: ${vote_average}</li>
</ul>
</div>`;
// api에 연동된 영화들 추가
$("#movies").append(cardTemp);
movies 안에 들어갈 카드을 정의해준뒤 append 해주면 카드 추가 성공!