<aside> ๐ก #ajax #fetch #request #response
</aside>
๊ฐ์
Asynchronous Javascript and XML์ ์ฝ์๋ก ๋น๋๊ธฐ ํต์ ์ ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ์ผ๋ก ์ฌ๊ตฌ์ฑํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ํ ํ์ ์์ด ๋์ ์ผ๋ก ์์ฒญ๊ณผ ์๋ต์์ ์ ํ ์ ์์ด HTML๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆฌํ ์ ์๊ฒ ๋์์ต๋๋ค.
์๋ ๋ฐฉ์
Ajax๋ ์๋ก์ด ๊ธฐ์ ์ด ์๋๋๋ค. ๋ด๋ถ์ ์ผ๋ก XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ XML ํ์์ผ๋ก ํ์ด์ง์ ์ ๋ณด๋ฅผ ์ปดํ์ผ ํฉ๋๋ค. ์์ฒญ์ ์ฌ์ฉ์๊ฐ ์ ์ํ HTTP ๋ฉ์๋์ ํํ๋ก ์ ์ก์ด ๋๋ฉฐ, ์๋ต์ด ๋์ฐฉํ  ๋์ ๋ฑ๋ก๋ ์ฝ๋ฐฑํจ์๊ฐ ํธ์ถ์ด ๋์ด ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ  ์ ์์ต๋๋ค.
์ผ๋ฐ form์ ์ด์ฉํ ๋ฌธ์ 
์ฅ์ 
์์
์ผ๋ฐ form
<form id="userDelete" method="post">
	{% csrf_token %}
	<input type="submit" value="๊ณ์  ์ญ์ ํ๊ธฐ" />
</form>
Ajax(fetch ์ฌ์ฉ)
fetch("url", {
	method: "DELETE",
	headers: {
		"Content-Type": "application/json",
		"X-CSRFToken": getCookie("csrftoken")
	}
})
	.then(res => res.json())
	.then(data => {});
Extensible Markup Language(XML)๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๋ ๊ท์น์ ์ ๊ณตํ๋ ๋งํฌ์ ์ธ์ด์ ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ ์กํ๋ ๋ฐ ์์ฃผ ์ฌ์ฉํฉ๋๋ค. ํ ์คํธ ๊ธฐ๋ฐ ํ์์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ์ง, ๋์์๊ณผ ๊ฐ์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ์ ์ฅ ์๋ ์ ํฉํ์ง ์์ต๋๋ค. (JSON, HTML ํจ๊ป ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.) XML ๋ฌธ์๋ ์ฌ๋ฌ ์์คํ  ๊ฐ์ ๊ณต์ ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ ๋ฐ ์ ์ฅํ ์ ์์ต๋๋ค.
| HTML | XML | |
|---|---|---|
| ์ฉ๋ | ๋ฐ์ดํฐ ํ์ | ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ์ ์ก | 
| ํ๊ทธ | ๋ฏธ๋ฆฌ ์ ์๋ ํ๊ทธ | ๊ณ ์ ํ ํ๊ทธ๋ฅผ ๋ง๋ค๊ณ ์ ์ ๊ฐ๋ฅ | 
| ๊ตฌ๋ฌธ ๊ท์น | ๋์๋ฌธ์ ๊ตฌ๋ถx | ๋์๋ฌธ์ ๊ตฌ๋ถ |