JavaScript

JavaScript Ajax 비동기 통신에 대해서 알아보자 part2!

martinooo 2021. 7. 26. 15:41
728x170

part1에서 기본적인 Ajax 원리를 알아보았다면 오늘은 실제 Api를 활용해봐요!

 

외부데이터를 받아노는 fetch API를 활용해서 받오겠습니다! PART1 참고해주세요 ㅎ

 

API를 깊에 정의하면 어렵지만

저는 API를 정의한다면 잘만들어진 API에 사용방법을 알려줄께 그방법대로 우리의 API를 잘활용해봐 이렇게 이해해를 합니다

 

그럼 실제 API를 활용해보겠습니다 

사이트는  https://yts.mx/api 

 

API Documentation - YTS YIFY

Official YTS YIFY API documentation. YTS offers free API - an easy way to access the YIFY movies details.

yts.mx

Eedpoint는 Api 접속하기위한 url 입니다 

그밑에 Endpoint Parameters는 요청을 보낼떄 필요한 값들 입니다! Required에 x표시 보이시죠? 즉 필수조건이 아니기떄문에 그냥 요청을 보내도 응답을 받을수 있습니다!

 

자그럼 Let's get started! 

 

vscode에 index.html을 만들어 주시고 

boommmmm

브라우저를 열고 결과값을 보시면

요청한 결과의 응답이 잘 왔습니다 그럼 하나씩 정리를 해보죠!

 

ajax함수를 선언하고

reponse에 데이터 반환값을 저장하고 if문에 status 200이 아니라면 return json 형태로 응답값을 받습니다!

fetch('https://yts.mx/api/v2/list_movies.json?sort_by=year&order_by=desc&limit=5').then(function(response){
               if(response.status != 200){
                   alert('서버 통신 실패했습니다!');
               } else{
                   return response.json();
               }
               //다시 callback함수로 .then 선언하고 데이터 값을 반환 받을수있다
            })

이렇게 하시고 이제 return 데이터 값을 또 받아야죠?

그럼 다시 .then을 선언합니다 

 

.then(function(JsonDate){
                var moviList = JsonDate.data.movies;
                

                //반복문을 활용해서 movies 배열에 list 나열한다 
                for(let i = 0; i < moviList.length; i++){
                    console.log(moviList[i].title)

                    var title = moviList[i].title;
                    var year = moviList[i].year;
                    var img = moviList[i].img;
                    var summary = moviList[i].summary;
                    var genres = moviList[i].genres;

                    console.log(title , year ,  img , summary , genres)
                }   
            })
        }

여기서 JsonDate값을 인자로 받고 movies 정보는 JsonDate.data.movies 여기 안에 있어서 변수에 할당하고 

for문으로 moviList 배열값을 나열합니다!

함수 호출을 위해서 마지막에 즉시호출 선언은 꼭해주세요!

 

다음에는 API로 받은 응답값을 프론트 UI단에 구현해보겠습니다!!

 

 

그리드형