๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป DEV/Javascript & NodeJS

[Javascript] Fetch API

by vodkassi 2021. 5. 27.
728x90

โœจ Fetch API ๋ž€?

์›๊ฒฉ API๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ•จ์ˆ˜์ด๋ฉฐ, ์ „๋‹ฌ์ธ์ž๋กœ url ๊ณผ options ๋ฅผ ๋ฐ›๋Š”๋‹ค. url ์—๋Š” API ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ ,  options ์—๋Š” request ๋‚ด์šฉ์„ ์„ธ๋ถ€์ ์œผ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค.

 

let url = 'http://something.com'
let options = {
  method: 'POST',
  body: JSON.stringify({
      username:"์•„์ด์Šค", 
      text:"์•„๋ฉ”๋ฆฌ์นด๋…ธ"
  }),
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  }
 }

fetch(url, options)
  .then((response) => console.log("response:", response))
  .catch((error) => console.log("error:", error));

 

โœจ Fetch API ์‚ฌ์šฉ ๋ฐฉ๋ฒ• (Node, browser)

๋ธŒ๋ผ์šฐ์ €์—๋Š” ๋‚ด์žฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‚˜, node ์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณ„๋„์˜ ๋ชจ๋“ˆ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

์ด ๋•Œ, node-fetch ๋ชจ๋“ˆ์„ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

npm install node-fetch ๋ฅผ ์ง„ํ–‰ํ•œ ์ดํ›„, js ํŒŒ์ผ์—์„œ import ๋ฅผ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

const fetch = require('node-fetch'); // import ํ•˜๋Š” ๋ฐฉ๋ฒ• : js ํŒŒ์ผ ์ตœ์ƒ๋‹จ์— ํ•ด๋‹น ๊ตฌ๋ฌธ ์ž…๋ ฅ 

 

โœจ Fetch API ์˜ ํŠน์ง•

HTTP ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ 400 ๋˜๋Š” 500๋Œ€๋ฅผ ๋ฐ˜ํ™˜ํ•ด๋„ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ reject ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋„คํŠธ์›Œํฌ ์žฅ์•  ๋˜๋Š” ์š”์ฒญ์ด ์™„๋ฃŒ๋˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ์—๋งŒ reject ๋ฅผ ํ•œ๋‹ค. ๋Œ€์‹  ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ 400 ๋˜๋Š” 500์ด ๋ฐ˜ํ™˜๋  ๊ฒฝ์šฐ ok ์ƒํƒœ๊ฐ€ false ๊ฐ€ ๋œ๋‹ค.

 

๋˜ํ•œ options ์ถ”๊ฐ€ ์„ค์ •์„ ํ†ตํ•ด ์ฟ ํ‚ค, ํŒŒ์ผ ์ฒจ๋ถ€ ๋“ฑ์˜ ๊ณ ๊ธ‰ ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์ฐธ๊ณ  ์ž๋ฃŒ

MDN Fetch API

๋Œ“๊ธ€