[UMC]데이터 통신
Web 8주차 워크북
📝 실습 체크리스트
-
실습결과 : https://chlwlstlf.github.io/UMC/index8.html
const $contentBox = document.querySelector("#contentBox"); const API_KEY = "AIzaSyCqVlpc4zisorUoXGfENEit1CeouztXTko"; function fetchVideo() { fetch( `https://youtube.googleapis.com/youtube/v3/videos?part=snippet%2C%20statistics&chart=mostPopular&maxResults=100®ionCode=kr&key=${API_KEY}` ) .then((response) => response.json()) .then((result) => result.items.map((video) => videoCardTemplate(video))) .catch((error) => console.log(error)); } fetchVideo(); function videoCardTemplate(data) { console.log(data); const videoItem = ` <div class="videoItemContainer"> <a href=${`https://www.youtube.com/watch?v=${data.id}`}> <div class="videoThumbnailContainer"> <img class="thumbnailImg" src=${ data.snippet.thumbnails?.high.url } /> </div> </a> <div class="videoDetailsContainer"> <a class="videoChannelLink" href=${`https://www.youtube.com/channel/${data.snippet.channelId}`}> <img class="channelImg" src="https://yt3.ggpht.com/8T1OF6XdiT2t5fjitlxh5KzcrqSsTbrEUxCF0JOM_fCKgWCenl0X8lvmv6NGmLVDSVsP4wZvwQ=s68-c-k-c0x00ffffff-no-rj" /> </a> <a href=${`https://www.youtube.com/watch?v=${data.id}`}> <div class="videoMetaDetails"> <div class="videoTitle"> <h3>${data.snippet.title}</h3> </div> <div class="videoMetaData"> <p class="metaText">${data.snippet.channelTitle}</p> <p class="extraMeta"> <span class="metaText viewCount">${ Number(data.statistics.viewCount) > 1000 ? (Number(data.statistics.viewCount) / 1000).toFixed(0) + "K" : Number(data.statistics.viewCount) } views</span> <span class="metaText">•${luxon.DateTime.fromISO( data.snippet.publishedAt ).toRelative()}</span> </p> </div> </div> </a> </div> </div> `; $contentBox.insertAdjacentHTML("beforeend", videoItem); }
🔥 트러블 슈팅(실패한 경험도 성장을 위한 경험!)
- 트러블 슈팅 양식 [ 문제 원인 ] [ 해결 방안 ] [ 참고 자료 ]
핵심 키워드 🎯
-
HTTP = HyperText Transfer Protocol
- Request : front에서 sever로 데이터를 요청하는 것
- 요청 메소드
- GET : 조회 (body X)
- POST : 추가 (body O)
- PUT : 수정 (body O)
- DELETE : 삭제 (body X) ```jsx
```
- 요청 메소드
-
Response
- XML :
James - JSON : { “id” : 1 }
- XML :
-
데이터 통신
-
fetch : fetch(url, options)
//promise fetch("https://jsonplaceholder.typicode.com/users")//promise 형태 .then(response => response.json()) .then(data => data.map(item => result.push(item)) .catch(error => console.log(error)) console.log(result[0]) //aysnc, await const dataFetch = async() => { const response = await fetch("https://jsonplaceholder.typicode.com/users"); const data = await response.json(); return data; } const dataResult = dataFetch();
-
axios
//html <body> 태그 아래에 //<script src="https://unpkg.com/axios/dist/axios.min.js"></script> 추가 axios .get("https://jsonplaceholder.typicode.com/users") .then((response) => console.log(response.data)); const dataFetch = async () => { const response = await axios.get( "https://jsonplaceholder.typicode.com/users" ).data; return response; }; const dataResult = dataFetch(); console.log(dataResult);
-
8주차 수업 후기 📢
- 8주차 수업을 듣고 서로 느낀 점을 이야기해주세요!
- 핵심 키워드에 대해 완벽하게 이해했는지? 혹시 이해가 안 되는 부분은 뭐였는지? 서로 이야기해주세요!
!주의사항
- 과제 피드백 기반 진행입니다 - 한명씩 본인의 과제를 발표하는 시간 그리고 해온 과제에 대한 피드백을 하는 시간 (ex:전 이렇게 생각해서 이런 부분 다르게 해왔는데 저것도 괜찮은 것 같아요!)이 무조건 기반이 되어야 합니다!
- 부가적으로 워크북에서 제공되는 키워드 혹은 강의에서 들은 디테일 적인 부분에서 더 토의해봐도 좋을 것 같습니다
논의해보면 좋은 것들 🔥
- XML 대신 JSON을 데이터 통신에서 많이 쓰는 이유에 대해 토의해보기
- api를 JavaScript로 호출하는 방식에 대해서 서로 공유하고 각각 스타일별로 장단점을 분석해보기
- api를 호출하는 다른 라이브러리에 대해서도 조사해보기
댓글남기기