๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Frontend Dev/JavaScript

๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๋Š” Fetch API

๋ฐ˜์‘ํ˜•

๐Ÿ‘พ Fetch API

 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•„์š”ํ•  ๋•Œ ์„œ๋ฒ„์— ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์ƒˆ๋กœ์šด ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๋Š” ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. Fetch API๋Š” ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ํฌํ•จํ•œ ๋ฆฌ์†Œ์Šค ์ทจ๋“์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. Fetch API๊ฐ€ ์ œ๊ณตํ•˜๋Š” fetch() ๋ฉ”์„œ๋“œ๋กœ ๋„คํŠธ์›Œํฌ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์‰ฝ๊ฒŒ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 (์ด์ „์—๋Š” XMLHttpRequest๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค. Fetch๋Š” ๋” ์ข‹์€ ๋Œ€์ฒด์ œ์ด๋‹ค.)

 Fetch API๋Š” Request์™€ Response ๊ฐ์ฒด, ๊ทธ๋ฆฌ๊ณ  ๊ธฐํƒ€ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์— ๊ด€๋ จ๋œ ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•˜๊ณ , CORS์™€ HTTP Origin ํ—ค๋” ํ–‰๋™ ๋“ฑ ๊ด€๋ จํ•œ ๊ฐœ๋…๋„ ํฌํ•จํ•œ๋‹ค.

 fetch() ๋ฉ”์„œ๋“œ๋Š” ํ•˜๋‚˜์˜ ํ•„์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋Š” ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ๋ฅผ ๋ฐ›๋Š”๋‹ค. ๋ฐ˜ํ™˜ ๊ฐ’์€ ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ Response๋กœ ์ดํ–‰ํ•˜๋Š” Promise์ธ๋ฐ, ์„œ๋ฒ„๊ฐ€ ํ—ค๋”๋ฅผ ํฌํ•จํ•œ ์‘๋‹ต์„ ํ•˜๋Š” ์ˆœ๊ฐ„ ์ดํ–‰ํ•œ๋‹ค. ์ด๋Š” ์„œ๋ฒ„๊ฐ€ HTTP ์˜ค๋ฅ˜ ์‘๋‹ต ์ฝ”๋“œ๋กœ ์‘๋‹ตํ•ด๋„ ์ดํ–‰ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ, ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜์— init ์˜ต์…˜ ๊ฐ์ฒด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

โœ”๏ธ Fetch ๊ธฐ๋ณธ ๋ฌธ๋ฒ•

let promise = fetch(url, [options])

 • url ์ ‘๊ทผํ•˜๊ณ ์ž ํ•˜๋Š” URL

 • options ์„ ํƒ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ HTTP ๋ฐฉ์‹(method), HTTP ์š”์ฒญ ํ—ค๋”(headers), HTTP ์š”์ฒญ ์ „๋ฌธ(body) ๋“ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. (default๋Š” GET)

 • fetch() ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ํ”„๋กœ๋ฏธ์Šค ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

โœ”๏ธ ๊ธฐ๋ณธ์ ์ธ Fetch ์š”์ฒญ

// ๋„คํŠธ์›Œํฌ์—์„œ JSON ํŒŒ์ผ์„ ๊ฐ€์ ธ์™€์„œ console์— ์ถœ๋ ฅ
fetch('<http://example.com/movies.json>')
  .then((response) => response.json())
  .then((data) => console.log(data));

 1. ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ํ˜•ํƒœ์˜ fetch()๋Š” ๊ฐ€์ ธ์˜ค๊ณ ์ž ํ•˜๋Š” ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ๋กœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•˜๋‚˜์˜ ์ธ์ˆ˜๋งŒ ๋ฐ›๋Š”๋‹ค.

 2. ์‘๋‹ต์€ Response ๊ฐ์ฒด๋กœ ํ‘œํ˜„๋˜๋ฉฐ, HTTP ์‘๋‹ต ์ƒํƒœ(status), HTTP ์‘๋‹ต ํ—ค๋”(headers), HTTP ์‘๋‹ต ์ „๋ฌธ(body) ๋“ฑ์„ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ง์ ‘ JSON ์‘๋‹ต ๋ณธ๋ฌธ์„ ๋ฐ›์„ ์ˆ˜๋Š” ์—†๋‹ค.

 3. JSON ๋ณธ๋ฌธ ์ฝ˜ํ…์ธ ๋ฅผ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” json() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

 → json()์€ Response ๊ฐ์ฒด์—์„œ JSON ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ณ , ์ด๋ฅผ JavaScript ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. json()์€ Response ๊ฐ์ฒด์— ๋Œ€ํ•ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ํ˜ธ์ถœ๋˜๋ฉฐ, ํ”„๋กœ๋ฏธ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป example

fetch("URL") 
  .then((res) => {
    console.log(res) // Response ๊ฐ์ฒด ("URL"์„ url๋กœ ๋ฐ›์Œ)
    return res.json()
  })
  .then((data) => {
    console.log(data) // data (JSON ๋ณธ๋ฌธ ์ปจํ…์ธ )
  })
  .catch((error) => console.log(error))

 

 


 

๐Ÿ“Œ ๋” ์ž์„ธํ•œ ๋ถ€๋ถ„์€ MDN์„ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค :-)

 

Fetch API - Web API | MDN

Fetch API๋Š” ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ํฌํ•จํ•œ ๋ฆฌ์†Œ์Šค ์ทจ๋“์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, XMLHttpRequest๋ณด๋‹ค ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์—ฐํ•œ ๋Œ€์ฒด์ œ์ž…๋‹ˆ๋‹ค.

developer.mozilla.org

 


 

๐Ÿ’ฌ Fetch API๋ฅผ ์‚ฌ์šฉํ•ด 2๊ฐœ์˜ ์š”์ฒญ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ํ•ฉ์น˜๋Š” ๊ณผ์ œ๋ฅผ ํ–ˆ์—ˆ๋‹ค. (Chaning๊ณผ Promise.all, async/await๋ฅผ ์‚ฌ์šฉ)

 ์ด ๊ณผ์ œ๋ฅผ ํ•˜๋ฉด์„œ fetch ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ fetch๋กœ url์„ ๋ฐ›์€ ํ›„ promise์™€ then์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€๋„ ํ™•์‹คํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. 

 (์•„๋ž˜ ๊ธ€์˜ โญ๏ธ ๊ณผ์ œ. Part3 - fetch API ์ฐธ๊ณ )

 

Section2 Unit3 JS/Node ๋น„๋™๊ธฐ - fetchAPI

Section2 Unit3 [JS/Node] ๋น„๋™๊ธฐ - fetchAPI ๐Ÿ“Œ Chapter4. fetch API • Fetch API๋Š” ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ํฌํ•จํ•œ ๋ฆฌ์†Œ์Šค ์ทจ๋“์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. Fetch API๋ฅผ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„์— ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์ƒˆ๋กœ์šด

fay-story.com


โœ๏ธ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ์ •๋ณด๋‚˜ ๋” ๊ณต์œ ํ•  ๋‚ด์šฉ์ด ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”!

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜Š

๋ฐ˜์‘ํ˜•