์น ํ๋ก ํธ์๋ ๊ฐ๋ฐ์
๋ก ์ฑ์ฅํ๊ธฐ ์ํด ์ฐํ ์ฝ์์ ์ถ์ฒ๋ฐ์ ์ฑ ์ ์ฝ๊ณ
Asynchronous Javascript and XML ์ ์ฝ์๋ก
ํ์ด์ง๋ฅผ ์์ ํ ๋ค์ ๋ก๋ํ์ง ์๊ณ ์ต์ด ํ์ด์ง๋ก ๋ก๋ ํ ํ์ํ ๋ฐ์ดํฐ๋ง
์๋ฒ์์ ๋ก๋
ํ๋ ์๋ก์ด ๊ธฐ์
REperesentational State Transfer์ ์ฝ์๋ก ์น์๋น์ค๋ฅผ ๋์์ธํ๊ณ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ชจ๋ REST API์ ์ถ์ํ๋ ๋ฆฌ์์ค์ ์๋ค.
๋๋ฉ์ธ์ ๋ฆฌ์์ค๋ก ๋ถํ ํด์ผ ํ๋ฉฐ ๊ฐ ๋ฆฌ์์ค๋ ํน์ URI๋ก ์ ๊ทผํด ์ฝ๊ฑฐ๋ ์กฐ์ํ ์ ์์ด์ผ ํ๋ค.
๋์ | URI | HTTP ๋ฉ์๋ |
---|---|---|
๋ชจ๋ ์ฌ์ฉ์์ ๋ฐ์ดํฐ ์ฝ๊ธฐ | https://api.example.com/user/ | GET |
ID๊ฐ '1'์ธ ์ฌ์ฉ์์ ๋ฐ์ดํฐ ์ฝ๊ธฐ | https://api.example.com/user/1 | GET |
์๋ก์ด ์ฌ์ฉ์ ์์ฑ | https://api.example.com/user/ | POST |
ID๊ฐ '1'์ธ ์ฌ์ฉ์์ ๋ฐ์ดํฐ ๊ต์ฒด | https://api.example.com/user/1 | PUT |
ID๊ฐ '1'์ธ ์ฌ์ฉ์์ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ | https://api.example.com/user/1 | PATCH |
ID๊ฐ '1'์ธ ์ฌ์ฉ์์ ๋ฐ์ดํฐ ์ญ์ | https://api.example.com/user/1 | DELETE |
PUT ๋ฉ์๋๋ HTTP์์ฒญ์ ๋ณธ๋ฌธ์ ์๋ก์ด ์ฌ์ฉ์์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด์ผํ๋ค.
PATCH ๋ฉ์๋๋ ์ด์ ์ํ์ ์ฐจ์ด๋ง ํฌํจํ๋ค.
์ฝ๋ฐฑ์ผ๋ก ๊ธฐ๋ฐ์ผ๋ก ํ๋ HTTP ํด๋ผ์ด์ธํธ์ ํต์ฌ์ธ request ๋ฉ์๋๋ค.
๋ํดํธ๋ก ํ์์์์ ์์ง๋ง ๊ฐ์ฒด์ timeout์์ฑ์ ์์ ํ๋ฉด ํ์์์์ ๋ณ๊ฒฝํ ์ ์๋ค.
HTTP ํด๋ผ์ด์ธํธ์ ๊ณต๊ฐ API๋ Promise๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์
request๋ฉ์๋๋ ํ์ค XMLHttpRequest์์ฒญ์ ์๋ก์ด Promise ๊ฐ์ฒด๋ก ๋ฌถ๋๋ค.
๊ณต๊ฐ ๋ฉ์๋ get,post,put,patch,delete๋ ์ฝ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ํด์ฃผ๋ request ๋ฉ์๋์ ๋ ํผ(์ ์ ํ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํ๋)๋ค.
์๊ฒฉ ๋ฆฌ์์ค
์ ์ ๊ทผ
ํ๊ณ ์ ๋ง๋ค์ด์ง ์๋ก์ด API๋ค.
๋ชฉ์ ์ Request๋ Response๊ฐ์ ๋ง์ ๋คํธ์ํฌ ๊ฐ์ฒด์ ๋ํ ํ์ค ์ ์๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด๋ค.
์ด ๋ฐฉ์์ผ๋ก ์ด ๊ฐ์ฒด๋ ServieWorker์ Cache๊ฐ์ ๋ค๋ฅธ API์ ์ํธ ์ด์ฉ ํ ์ ์๋ค.
๋ค๋ฅธ ๋ฐฉ์๊ณผ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ ๋ธ๋ผ์ฐ์ ์ Node.js์์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ด ํน์ง์ธ ์๋ฒ์ ํต์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค.
Promise๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ ์์ด Fetch API์ ๋งค์ฐ ์ ์ฌํ๋ค.
Fetch API๋ ์ต์ ๋ธ๋ผ์ฐ์ ์์๋ง ๋์ํ๊ธฐ ๋๋ฌธ์ ์ด์ ๋ฒ์ ์ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๊ฒ ํ๋ ค๋ฉด Axios๋ XMLHttpRequest๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
์ต์คํ๋ก๋ฌ์ ์ง์์ ์ค๋จ์ผ๋ก Fetch API
๋ฅผ ๊ถ์ฅํ๋ค.
Fetch API์ XMLHttpRequest๋ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ์ง๋ง Node.js๋ ๋ฆฌ์ํธ ๋ค์ดํฐ๋ธ ๊ฐ์ ๋ค๋ฅธ JSํ๊ฒฝ
์์ ์ฝ๋๋ฅผ ์คํํด์ผ ํ๋ ๊ฒฝ์ฐ axios
๊ฐ ๋งค์ฐ ์ข์ ์๋ฃจ์
์ด๋ค.
Fetch API์ ๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ฅ ์ค ํ๋๋ Request๋ Response ๊ฐ์ ๋คํธ์ํฌ ๊ด๋ จ ๊ฐ์ฒด์ ํ์ค ์ ์๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด๋ค.
์ด ํน์ฑ์ ServiceWorker API๋ Cache API์ ์๋ง๊ธฐ ๋๋ฌธ์ ์ฝ๋ ๋ฒ ์ด์ค
๋ฅผ ๋น ๋ฅด๊ฒ ๋ฐ์
์ํค๊ณ ์ ํ๋ ๊ฒฝ์ฐFetch API
๋ฅผ ๋งค์ฐ ์ ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ง๋ค์ด์ค๋ค.
axios์๋ cross-site requet ์์กฐ
๋ XSRF
์ ๋ํ ๋ณดํธ ์์คํ
์ด ๋ด์ฅ๋ผ ์๋ค. XMLHttpRequest๋ Fetch API๋ฅผ ๊ณ์ ์ฌ์ฉํ๋ฉด์ ์ด๋ฐ ์ข
๋ฅ์ ๋ณด์ ์์คํ
์ ๊ตฌํํด์ผ ํ๋ค๋ฉด ์ด ์ฃผ์ ์ ๋ํ axios ๋จ์ ํ
์คํธ
๋ฅผ ์ดํด ๋ด์ผ ํ๋ค.
axios๋ Fetch API ๊ธฐ๋ฐ์ ์ฝ๋๋ ์ด๋ณด์๋ ์๋ฏธ๋ฅผ ์ดํดํ๊ธฐ ์ฝ๋ค.
์ฝ๋ฐฑ ์์
์ ์ต์ํ์ง ์์ ์ฃผ๋์ด ๊ฐ๋ฐ์์๊ฒ XMLHttpRequest๋ฅผ ์ฌ์ฉํ ์ฝ๋๋ฅผ ์ ๊ณตํ๋ค๋ฉด ๋ด๋ถ API
๋ฅผ Promise๋ก ๋ํ
ํ๋ ๊ฒ์ด ์ข๋ค.