Fetch API๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ์ฐ์ต!
JSONPlaceholder
์์๋ก jsonplaceholder ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ค ํ๋ค.
์๋ฒ๊ฐ ์์ ๋ ๊ฐ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ์ ์ ์ฉํ ์ฌ์ดํธ๋ค.
https://jsonplaceholder.typicode.com/
์ฌ์ฉํ ์ ์๋ ๋ฐ์ดํฐ ์์ค๋ค์ ์๋์ ๊ฐ๋ค. ์ด ์ค์์ users๋ฅผ ์ด์ฉํด๋ณด๋ ค ํ๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ HTTP ๋ฉ์๋๋ค์ ๋ค์๊ณผ ๊ฐ๋ค. REST API๋ฅผ ์ฐ์ตํด๋ณผ ๋๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ๋ค.
Fetch API๋ก ๋ฐ์ดํฐ ๋ฐ์์ค๊ธฐ
Fetch API
Fetch API๋ XMLHttpRequest ๊ฐ์ฒด์์ ์ข ๋ ๋ณด์๋ API๋ก, ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๋ผ๋ฉด ๋๋ถ๋ถ ๋ด์ฅ๋์ด์๋ค.
๋น๋๊ธฐ ํต์ ์ ๋ง์ด ์ฌ์ฉ๋๋ ajax๋ฅผ ๋์ฒดํ์ฌ ํ์ด์ง์ ์๋ก๊ณ ์นจ ์์ด ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ API๋ค.
์ฒซ๋ฒ์งธ ์ธ์๋ก url์ ๋ฐ๊ณ , ํ์๊ฐ ์๋ ๋๋ฒ์งธ ์ธ์๋ก ์ด๊ธฐํ์ ์ฌ์ฉ๋๋ ๊ฐ์ฒด๋ฅผ ๋ฐ๋๋ค.
์์ JSONplaceholder url์ ์๋์ ๊ฐ์ ํํ๋ก ์ฌ์ฉํ ์ ์๋ค.
Fetch๋ ํ๋ก๋ฏธ์ค ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค. ์ด ๊ฐ์ฒด๋ response์ธ๋ฐ, ์์ฒญ์ด ์ฑ๊ณตํ๋ ์คํจํ๋ ๋ฐํ๋๋ค.
๊ทธ๋์ response ๊ฐ์ฒด๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๋ฐํ๋์์ ๋๋ง json ๋ฐ์ดํฐ๋ก ๋ฐ๊พธ์ด ๋ฐํํ๋๋ก ํ๋ค.
const fetchInfo = function () {
return fetch('https://jsonplaceholder.typicode.com/users').then(
(response) => {
if (response.ok) {
return response.json();
} else {
return console.error('response error');
}
}
);
};
๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ HTML ํ๊ทธ์ ๋ฃ๋ ๊ณผ์ ์ด๋ค.
userInfos๋ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ for..of ๋ฌธ์ ์ด์ฉํ์ฌ ๊ฐ๊ฐ์ ์ ๋ณด๋ฅผ li ํ๊ทธ์ ๋ด์ ์ด๋ฏธ ์ ์๋์ด ์๋ ul ํ๊ทธ๋ก ๋ฃ์ด์คฌ๋ค.
const repoInfos = function (userInfos) {
for (user of userInfos) {
let li = document.createElement('li');
li.classList.add('user-item');
let info = `name: ${user.name}\n email: ${user.email}\n phone: ${user.phone}`;
li.innerText = info;
userList.prepend(li);
}
};
์ ์์ ์ผ๋ก ๋์ํ๋ค๋ฉด ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋ค.
CSS๋ฅผ ๊ฐ๋ณ๊ฒ ๋ง์ ธ์คฌ๋ค. Grid๋ฅผ ์ด์ฉํด 2๋จ์ผ๋ก ์ ๋ ฌํ๋ค.
์์ฉ
json ๋ฐ์ดํฐ ์ค ์ด๋ฆ์ select ํ๊ทธ์ ๋์ ์ผ๋ก ์ถ๊ฐํด์ ์ ํํ ์ด๋ฆ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐฐ๊ฒฝ์์ ๋ฐ๊พธ๋๋ก ํด๋ดค๋ค.
์ ์ด์ฟผ๋ฆฌ๋ก ์จ๋ดค๋ค๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ํ๋ ค๋ ์ฝ์ง ์์๋ค!.. ์ด ๋ถ๋ถ์ ๋ํด์๋ ๋ฐ๋ก ํฌ์คํ
ํ ์์ .
select ํ๊ทธ์ option ํ๊ทธ๋ฅผ ๋์ ์ผ๋ก ์ถ๊ฐํ ๋ ์ ์ฝ๋๋ฅผ ์์ฉํ์ฌ ์๋์ ๊ฐ์ด ์์ฑํ๋ค.
const loadInfos = function (userInfo) {
for (user of userInfo) {
let option = document.createElement('option');
let name = user.name;
option.setAttribute('value', name);
option.innerText = name;
nameList.prepend(option);
}
};
'๐ Studying > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ์ด๋ฒคํธ ์ ํ bubbling, capturing (3) | 2022.04.28 |
---|---|
[JavaScript] ํ๋ก๋ฏธ์ค์ ๋ํด ์์๋ณด์ Promise (3) | 2022.04.27 |
[JavaScript] var์ ๋ฌธ์ ์ (var, let, const) (0) | 2022.04.24 |
String (0) | 2022.04.06 |
์๋ณ์ (0) | 2022.03.01 |
Comment