ajax
XMLHttpRequest
๊ฐ์ฒด๋ฅผ ์ด์ฉํด์ ์น ์๋ฒ์ ๋น๋๊ธฐ๋ก ํต์ ํ๊ณ , DOM ์ ์ด์ฉํด์ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ- Asynchronouse JavaScript XML
- ํ์ฌ XML์ ์ฌ์ฉํ๋๊ฑด ๋๋ฌผ๊ณ JSON์ ์ฌ์ฉ
- ํ์ด์ง ์๋ก๊ณ ์นจ ์์ด ํน์ ๋ฐ์ดํฐ๋ง ๋ฆฌ๋ก๋
- ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ณ ์์ ์ ์ํ
ajax ๊ตฌํํ๊ธฐ
ajax๋ฅผ ๊ตฌํํ๋ ๊ธฐ์ ์๋ ์ฌ๋ฌ ๊ธฐ์ ์ด ์กด์ฌํ๋ค.
๊ทธ ์ค์ ๋ํ์ ์ธ 3๊ฐ์ง์์ Fetch API์ ๋ํด์ ์์๋ณด์.
- XMLHttpRequest
- Fetch API
- JQuery
Fetch API
Fetch API๋ ๊ธฐ๋ณธ์ ์ผ๋ก XMLHttpRequest ๋ณด๋ค ๋ ๊ฐ๋ ฅํ๊ณ ์ ์ฐํ๋ค.
์ด๋ฒคํธ ๊ธฐ๋ฐ์ธ XMLHttpRequest๊ณผ๋ ๋ฌ๋ฆฌ Fetch API๋ Promise ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ด ๋น๋๊ธฐ ์ฒ๋ฆฌ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ์ ๋ง๋ ํํ์ด๋ค.
๊ทธ๋์ then
์ด๋ catch
์ ๊ฐ์ ์ฒด์ด๋์ผ๋ก ์์ฑํ ์ ์๋ค.
๊ฒฐ๊ตญ ์ด๋ ๊ฐ๋
์ฑ์ ํฐ ์ด์ ์ ์คฌ๊ณ , Async / Await
์ผ๋ก ๋น๋๊ธฐ ์ฝ๋ฐฑ์ ์ฝ๊ฒ ๋ฒ์ด๋ ์ ์๊ธฐ๋ ํ๋ค.
๋ํ Fetch API๋ JS ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ธฐ ๋๋ฌธ์, JQuery์ ๊ฐ์ด CDN ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์์
์ ํ์ง ์์๋ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค.
Fetch API์ ๊ธฐ๋ณธ ํํ
์์ ๋ง ํ๋ฏ, Fetch API ๋ Promise ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ ์ฒด์ด๋ ํํ๋ก ์ฌ์ฉ๋ ์ ์๋ค.
๋ค์์ then
๊ณผ catch
๋ก ์ฒด์ด๋์ ํ ํํ์ด๋ค.
fetch("http://server-ip.com")
.then((response) => {
return response.json();
})
.then((myJson) => {
console.log(JSON.stringify(myJson));
})
.catch((error) => {
console.err(error);
});
header ์กฐ์ํ๊ธฐ
์๋ฒ์ ํต์ ์ ํ ๋, HTTP ํค๋๋ฅผ ์กฐ์ํ๋ ์ผ์ ํ์์ ์ผ๋ก ์งํ๋์ด์ผ ํ๋ค.
Fetch API ์์๋ header๋ฅผ ์กฐ์ํ ์ ์๋๋ฐ, ๋ค์๊ณผ ๊ฐ์ด option ๊ฐ์ฒด์ headers ์ ๋ค์ด๊ฐ ๋ด์ฉ๋ค์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
const option = {
headers: {
"Content-Type": "application/json",
},
};
fetch("http://server-ip.com", option)
.then((response) => {
// ์๋ต
})
.then((myJson) => {
// ์๋ต
})
.catch((error) => {
// ์๋ต
});
Fetch API GET Method
Fetch API๋ก HTTP์ GET ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
const option = {
headers: {
"Content-Type": "application/json",
},
};
fetch("http://server-ip.com", option)
.then((response) => {
// ์๋ต
})
.then((myJson) => {
// ์๋ต
})
.catch((error) => {
// ์๋ต
});
Fetch API POST Method
Fetch API๋ก HTTP์ POST ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
const myData = {
id: 1,
content: "content",
};
const option = {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(myData),
};
fetch("http://server-ip.com", option).then((res) => {
// ์๋ต
});
Fetch API PUT Method
Fetch API๋ก HTTP์ PUT ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
const myData = {
id: 1,
content: "content",
};
const option = {
method: "PUT",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(myData),
};
fetch("http://server-ip.com", option).then((res) => {
// ์๋ต
});
Fetch API DELETE Method
Fetch API๋ก HTTP์ DELETE ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
const myData = { id: 1 };
const option = {
method: "DELETE",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(myData),
};
fetch("http://server-ip.com", option).then((res) => {
// ์๋ต
});
๋๊ธ