<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Fetch 시작하기</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <!-- jQuery 를 사용하기 위해서는 이 부분이 들어가 있어야 함 -->
<script>
/* fetch : 이 3줄은 하나로 묶여서 다님 */
fetch("여기에 URL 넣기").then(res => res.json()).then(data => { /* 해석 : 해당 URL 에서 result 를 가져와서 fetch 를 하는데, 이것을 json 형태로 변환하고, 이것을 활용할 것이다. */
console.log(data)
})
</script>
</head>
<body>
Fetch 연습을 위한 페이지
</body>
</html>
해당 데이터를 보고 fetch 코드에 입력한다.
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Fetch 시작하기</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
/* 이 3줄은 하나로 묶여서 다님 */
fetch("http://spartacodingclub.shop/sparta_api/seoulair").then(res => res.json()).then(data => { /* 해석 : 해당 URL 에서 result 를 가져와서 fetch 를 하는데, 이것을 json 형태로 변환하고, 이것을 활용할 것이다. */
console.log(data['RealtimeCityAir']['row'][0]) /* RealtimeCityAir에 row에 0번째 */
})
</script>
</head>
<body>
Fetch 연습을 위한 페이지
</body>
</html>
console 에는 내가 입력한 부분 console.log(data['RealtimeCityAir']['row'][0])
만 나타난다.
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Fetch 시작하기</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
/* 이 3줄은 하나로 묶여서 다님 */
fetch("http://spartacodingclub.shop/sparta_api/seoulair").then(res => res.json()).then(data => {
let rows = data['RealtimeCityAir']['row']
rows.forEach((a) => {
console.log(a)
});
})
</script>
</head>
<body>
Fetch 연습을 위한 페이지
</body>
</html>
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Fetch 시작하기</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
/* 이 3줄은 하나로 묶여서 다님 */
fetch("http://spartacodingclub.shop/sparta_api/seoulair").then(res => res.json()).then(data => {
let rows = data['RealtimeCityAir']['row']
rows.forEach((a) => {
console.log(a['MSRSTE_NM'])
});
})
</script>
</head>
<body>
Fetch 연습을 위한 페이지
</body>
</html>
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Fetch 시작하기</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
/* 이 3줄은 하나로 묶여서 다님 */
fetch("http://spartacodingclub.shop/sparta_api/seoulair").then(res => res.json()).then(data => {
let rows = data['RealtimeCityAir']['row']
rows.forEach((a) => {
console.log(a['MSRSTE_NM'], a['IDEX_MVL'])
});
})
</script>
</head>
<body>
Fetch 연습을 위한 페이지
</body>
</html>
<p>${변수명}</p>
로 데이터 자동 업데이트<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>미세먼지 API로Fetch 연습하고 가기!</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<style type="text/css">
div.question-box {
margin: 10px 0 20px 0;
}
</style>
<script>
/* q1() 함수를 불러옴 (즉, button 을 눌렀을 때 나타날 반응)*/
function q1() {
/* fetch 로 해당 URL 에서 데이터 가져옴 */
fetch("http://spartacodingclub.shop/sparta_api/seoulair").then(res => res.json()).then(data => {
let rows = data['RealtimeCityAir']['row'] /* 변수 rows 에 원하는 데이터 담는다 */
$('#names-q1').empty() /* id="names-q1 불러옴 */
rows.forEach((a) => { /* 반복문 */
let gu_name = a['MSRSTE_NM']
let gu_mise = a['IDEX_MVL']
let temp_html = `<li>${gu_name} : ${gu_mise}</li>`
$('#names-q1').append(temp_html) /* id="names-q1 불러옴 */
})
})
}
</script>
</head>
<body>
<h1>Fetch 연습하자!</h1>
<hr />
<div class="question-box">
<h2>1. 서울시 OpenAPI(실시간 미세먼지 상태)를 이용하기</h2>
<p>모든 구의 미세먼지를 표기해주세요</p>
<p>업데이트 버튼을 누를 때마다 지웠다 새로 씌여져야 합니다.</p>
<button onclick="q1()">업데이트</button> <!-- q1() 함수 -->
<ul id="names-q1"> <!-- id="names-q1 이름표 -->
<li>중구 : 82</li>
<li>종로구 : 87</li>
<li>용산구 : 84</li>
<li>은평구 : 82</li>
</ul>
</div>
</body>
</html>
<p>${변수명}</p>
로 데이터 자동 업데이트<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Fetch 연습하고 가기!</title>
<!-- JQuery를 import 합니다 -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<style type="text/css">
...
</style>
<script>
function q1() {
fetch("http://spartacodingclub.shop/sparta_api/seoulbike").then((response) => response.json()).then((data) => {
$('#names-q1').empty()
let rows = data['getStationList']['row']
$('#names-q1').empty()
rows.forEach((a) => {
let name = a['stationName']
let rack = a['rackTotCnt']
let bike = a['parkingBikeTotCnt']
let temp_html = `<tr>
<td>${name}</td>
<td>${rack}</td>
<td>${bike}</td>
</tr>`
$('#names-q1').append(temp_html)
});
})
}
</script>
</head>
<body>
<h1>Fetch 연습하자!</h1>
<hr />
<div class="question-box">
<h2>2. 서울시 OpenAPI(실시간 따릉이 현황)를 이용하기</h2>
<p>모든 위치의 따릉이 현황을 보여주세요</p>
<p>업데이트 버튼을 누를 때마다 지웠다 새로 씌여져야 합니다.</p>
<button onclick="q1()">업데이트</button>
<table>
<thead>
<tr>
<td>거치대 위치</td>
<td>거치대 수</td>
<td>현재 거치된 따릉이 수</td>
</tr>
</thead>
<tbody id="names-q1">
<tr>
<td>102. 망원역 1번출구 앞</td>
<td>22</td>
<td>0</td>
</tr>
<tr>
<td>103. 망원역 2번출구 앞</td>
<td>16</td>
<td>0</td>
</tr>
<tr>
<td>104. 합정역 1번출구 앞</td>
<td>16</td>
<td>0</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>미세먼지 API로Fetch 연습하고 가기!</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<style>
div.question-box {
margin: 10px 0 20px 0;
}
.bad { /* if 조건문을 충족할 시 적용될 CSS */
color: red;
}
</style>
<script>
function q1() {
fetch("http://spartacodingclub.shop/sparta_api/seoulair").then((response) => response.json()).then((data) => {
$('#names-q1').empty()
let rows = data['RealtimeCityAir']['row']
rows.forEach((a) => {
let gu_name = a['MSRSTE_NM']
let gu_mise = a['IDEX_MVL']
/* 조건을 충족하는 특정 데이터에만 적용 */
let temp_html = `` /* if 조건문으로 특정 데이터에 효과를 주려면, 백틱 안에는 비워둬야 함 */
if (gu_mise > 40) {
temp_html = `<li class="bad">${gu_name} : ${gu_mise}</li>` /* CSS 를 위해 bad 클래스명을 붙임 */
} else {
temp_html = `<li>${gu_name} : ${gu_mise}</li>`
}
$('#names-q1').append(temp_html)
});
})
}
</script>
</head>
<body>
<h1>Fetch 연습하자!</h1>
<hr />
<div class="question-box">
<h2>1. 서울시 OpenAPI(실시간 미세먼지 상태)를 이용하기</h2>
<p>모든 구의 미세먼지를 표기해주세요</p>
<p>업데이트 버튼을 누를 때마다 지웠다 새로 씌여져야 합니다.</p>
<button onclick="q1()">업데이트</button>
<ul id="names-q1">
<li>중구 : 82</li>
<li>종로구 : 87</li>
<li>용산구 : 84</li>
<li>은평구 : 82</li>
</ul>
</div>
</body>
</html>
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Fetch 연습하고 가기!</title>
<!-- JQuery를 import 합니다 -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<style type="text/css">
div.question-box {
margin: 10px 0 20px 0;
}
table {
border: 1px solid;
border-collapse: collapse;
}
td,
th {
padding: 10px;
border: 1px solid;
}
.red { /* if 조건문을 충족할 시 적용될 CSS */
color: red;
}
</style>
<script>
function q1() {
fetch("http://spartacodingclub.shop/sparta_api/seoulbike").then((response) => response.json()).then((data) => {
$('#names-q1').empty()
let rows = data['getStationList']['row']
$('#names-q1').empty()
rows.forEach((a) => {
let name = a['stationName']
let rack = a['rackTotCnt']
let bike = a['parkingBikeTotCnt']
let temp_html = ``
if (bike < 5) {
temp_html = `<tr class ="red">
<td>${name}</td>
<td>${rack}</td>
<td>${bike}</td>
</tr>`
} else {
temp_html = `<tr>
<td>${name}</td>
<td>${rack}</td>
<td>${bike}</td>
</tr>`
}
$('#names-q1').append(temp_html)
});
})
}
</script>
</head>
<body>
<h1>Fetch 연습하자!</h1>
<hr />
<div class="question-box">
<h2>2. 서울시 OpenAPI(실시간 따릉이 현황)를 이용하기</h2>
<p>모든 위치의 따릉이 현황을 보여주세요</p>
<p>업데이트 버튼을 누를 때마다 지웠다 새로 씌여져야 합니다.</p>
<button onclick="q1()">업데이트</button>
<table>
<thead>
<tr>
<td>거치대 위치</td>
<td>거치대 수</td>
<td>현재 거치된 따릉이 수</td>
</tr>
</thead>
<tbody id="names-q1">
<tr>
<td>102. 망원역 1번출구 앞</td>
<td>22</td>
<td>0</td>
</tr>
<tr>
<td>103. 망원역 2번출구 앞</td>
<td>16</td>
<td>0</td>
</tr>
<tr>
<td>104. 합정역 1번출구 앞</td>
<td>16</td>
<td>0</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
<style>
...
</style>
<script>
$(document).ready(function() {
fetch("http://spartacodingclub.shop/sparta_api/weather/seoul").then(res => res.json()).then(data => {
let num = data['temp'] /* fetch로 연결된 URL에서 temp 라는 key 값 불러와서, 변수 num 에 담기 */
$('#temp').text(num) /* id="temp" 불러와서, 변수 num 에 담겨있는 값을 적용시킨다 */
})
})
</script>
</head>
<body>
<div class="mytitle">
<h1>내 생애 최고의 영화들</h1>
<div>현재 서울의 날씨 : <span id="temp">20</span>도</div> <!-- id="temp" 이름표 -->
<button onclick="hey()">영화 기록하기</button>
</div>
...
</body>
</html>
$(document).ready(function() { ... })
기존의 사용 : function q1() { ... }
변경된 내용 : 해당 웹페이지에 접속하기만 해도, 바로 해당 코드가 바로 실행된다.
append() : 내용 추가
text()
: 해당 내용에 대해서만 적용
<!DOCTYPE html>
<html lang="en">
<head>
...
<style>
...
</style>
<script>
$(document).ready(function() {
/* 현재 서울의 날씨 */
fetch("http://spartacodingclub.shop/sparta_api/weather/seoul").then(res => res.json()).then(data => {
let num = data['temp']
$('#temp').text(num)
})
/* 영화 포스터 카드 */
fetch("http://spartacodingclub.shop/web/api/movie").then(res => res.json()).then(data => {
let rows = data['movies']
$('#cards').empty()
rows.forEach((a) => {
let title = a['title']
let desc = a['desc']
let comment = a['comment']
let star = a['star']
let image = a['image']
let star_image = `⭐`.repeat(star) /* 별표 이미지 : 숫자로 표기된 star 변수에서 값을 받아서, 그 수 만큼 repeat() 해서 별표 이미지를 반복 */
/* image : 이미지도 동일한 방식으로 사용된다. 주의! "" 큰 따옴표 표시 */
let temp_html = `<div class="col">
<div class="card h-100">
<img src="${image}" class="card-img-top" alt="..." />
<div class="card-body">
<h5 class="card-title">${title}</h5>
<p class="card-text">${desc}</p>
<p>${star_image}</p>
<p class="mycomment">${comment}</p>
</div>
</div>
</div>`
$('#cards').append(temp_html) /* id="cards" 불러오기 */
})
})
})
</script>
</head>
<body>
<div class="mytitle">
...
</div>
<!-- 포스팅 박스 -->
<div class="mypost">
...
</div>
<!-- 영화 포스터 카드 -->
<div class="mycards">
<div id="cards" class="row row-cols-1 row-cols-md-4 g-4"> <!-- id="cards" 이름표 붙이기 -->
<div class="col">
<div class="card h-100">
<img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg" class="card-img-top" alt="..." />
<div class="card-body">
<h5 class="card-title">영화 제목이 들어갑니다</h5>
<p class="card-text">여기에 영화에 대한 설명이 들어갑니다.</p>
<p>⭐⭐⭐</p>
<p class="mycomment">나의 의견을 쓰면 되겠죠</p>
</div>
</div>
</div>
<div class="col">
...
</div>
<div class="col">
...
</div>
<div class="col">
...
</div>
</div>
</div>
</body>
</html>