๋ฐฑ์๋์ ํ๋ก ํธ๊ฐ ๋ถ๋ฆฌ๋ ํ๋ก์ ํธ์ ๊ธฐ๋ณธ์ ์ธ ๋ฐฑ์๋ CRUD ๊ธฐ๋ฅ์ ๊ตฌํํ ํ request ์์ฒญ ์ ์๋ต ๋ฐ์ดํฐ๋ฅผ JavaScript์ fetch ์์ฒญ์ ํตํด ํ๋ก ํธ์์ ์ ๋ฌ๋ฐ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์๋ค.
์ฐ์ ํฌ์คํธ๋งจ์ผ๋ก request๋ฅผ ๋ณด๋์ ๋ ์๋ตํ๋ response๋ฅผ ํ์ธํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
๋ค์์ ํ๋ก ํธ์์ JavaScript๋ก ๋ฐฑ์๋ ์๋ฒ์ fetch ์์ฒญ์ ํตํด ์๋ต๋ฐ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ธํด๋ณธ๋ค.
// ๋ฐฑ์๋ ์๋ฒ url์ ์ ์ญ ๋ณ์๋ก ์ค์
const backend_base_url = "http://127.0.0.1:8000"
async function get_articles() {
const response = await fetch(`${backend_base_url}/articles/`, {
method: "GET",
})
const response_json = await reponse.json()
console.log(response_json)
}
์ฌ๊ธฐ์ ๋ฐฑ์๋ ์๋ฒ์ fetch ์์ฒญ์ ๋ณด๋ผ ๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ ํจํด ์ค ๊ฐ์ฅ ์ต์ ์ ๋ฐฉ๋ฒ์ธ async์ await์ ์ฌ์ฉํ์ฌ javascript์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
๊ฐ๋จํ ์ค๋ช ํ์๋ฉด JavaScript์ ํน์ฑ์ ๋น๋๊ธฐ ํจ์๋ ์คํ ์ ์์๋๋ก ๋์ํ์ง ์๊ณ ๋์ ํ ์ ์๋ ๊ฒ ๋ถํฐ ์คํ์ ํ๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ์ํ๋ ์์๋๋ก ๋์ํ ์ ์๋๋ก ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค.
๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด async function์ ์ ์ธํ๊ณ ์คํํ๋ฉด promise ๊ฐ์ฒด๋ฅผ ๋ฐํ๋ฐ๊ฒ ๋๋๋ฐ promise ๊ฐ์ฒด๋ฅผ ๋ฐํ ๋ฐ๊ธฐ ์ await์ ๊ฑธ์ด์ฃผ๋ฉด promise ๊ฐ์ฒด๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๋ฐํ ๋ฐ์ ๋ ๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋ฐํ์ด ์๋ฃ๋๊ณ ๋ ํ ์ด์ด์ ๋ค์์ผ๋ก ์ํํ ๋์์ ํ๊ฒ ๋๋ค.
๋ง์ฝ ์ํํ ๋์์ด ์์ ๋ await์ ๊ฑธ์ด์ฃผ์ง ์๊ณ promise ๊ฐ์ฒด๋ฅผ ๋ฐ๊ฒ ๋ ๊ฒฝ์ฐ promise ๊ฐ์ฒด๊ฐ pending ์ํ๋ก ๋ฐํ๋๋๋ฐ ์ด ๋ promise ๊ฐ์ฒด๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๋ฐํ ๋ฐ๊ณ ๋ค์ ๋์์ ์ํํ ์ ์๋๋ก await์ ๊ฑธ์ด ๊ธฐ๋ค๋ ค์ค๋ค.
๋ค์์ผ๋ก fetch ์์ฒญ์ ๋ณด๋ผ ๋ ํ์ฌ ๋๋ GET ๋ฉ์๋๋ก ์๋ต ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ method๋ฅผ GET์ผ๋ก ์ ๋ ฅํ์๊ณ , ๋ง์ฝ POST๋ PUT or PATCH ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ header์ content-type์ ์ ๋ ฅํ์ฌ ์ด๋ค ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์ง ์ ํ๊ณ body์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด fetch ์์ฒญ์ ๋ณด๋ธ๋ค.
์ด ํ ๋ฐํ๋ reponse๋ฅผ json ํ์์ผ๋ก ๋ณํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํ์ธํด๋ณด๋ฉด ์๋์ ๊ฐ๊ณ ์์์ ํฌ์คํธ๋งจ์ผ๋ก ํ
์คํธํ ๊ฒฐ๊ณผ์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋ค.