[๐Ÿ’ป ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE 44๊ธฐ] Fetch API, Axios

JiEunยท2023๋…„ 3์›” 21์ผ
0
post-thumbnail

โœ”๏ธ ์‹œ์ž‘

fetch API๋ฅผ ์ด์šฉํ•œ callback, promise, promise all, asyn/await๋ฅผ ์ฃผ์ œ๋กœํ•œ ๊ณผ์ œ๋ฅผ ํŽ˜์–ดํ™œ๋™์„ ํ†ตํ•ด ์ง„ํ–‰ํ–ˆ๋‹ค.


๐Ÿ“ ์•Œ๊ฒŒ ๋œ ์ 

โœ”๏ธ API

  • Application Programming Interface (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋žจ ์ธํ„ฐํŽ˜์ด์Šค)์˜ ์ค„์ž„๋ง
  • ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€ ์ฃผ๋Š” ์–ธ์–ด๋‚˜ ๋ฉ”์‹œ์ง€ ํ˜•์‹ (์ค‘๊ฐ„ ์—ญํ• ์ž)

โœ”๏ธ fetch API

  • ๋นŒํŠธ์ธ API๋ผ ๋ณ„๋กœ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.
  • json() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
  • ๋ฆฌํ„ด ๊ฐ’ : promise์ด๋ฉฐ ๊ทธ ๋ฆฌํ„ด ๊ฐ’์€ response ๊ฐ์ฒด๋กœ ๋Œ๋ ค์ค€๋‹ค.

    ๋ฆฌํ„ด๋œ ๊ฐ’์€ .then, .catch ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

- JSON.parse()

  • json๋ฌธ์ž์—ด์„ javascript ๊ฐ’์ด๋‚˜ ๊ฐ์ฒด๋กœ ์ƒ์„ฑํ•ด ์ค€๋‹ค.
JSON.parse(text[, reviver])
cosnt json = '{...}'
const obj = json.JSON.parse(value)

- json()

  • promise๋กœ ๋ฆฌํ„ดํ•ด ์ค€๋‹ค.

fetch ์ง„ํ–‰ ์ˆœ

promise โžค then โžค response.json() โžค then

then์œผ๋กœ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋ฉด ๋‹ค์Œ then์ด ์žˆ์„ ๋•Œ ๊ทธ ๊ณณ์œผ๋กœ ์ „๋‹ฌ ๋œ๋‹ค.

- promise all์„ ์ด์šฉํ•œ fetch ์‚ฌ์šฉ

return Promise.all([...]) // [response]
.then((result) => {
	return result.json() // [promise] promise ์ƒ์„ฑ(๋ณ€ํ™˜)
})

๊ณผ์ œ๋ฅผ ์ง„ํ–‰ ํ•˜๋ฉด์„œ ๋ง‰ํ˜”๋˜ ๋ถ€๋ถ„์ด
promise๋กœ ๋ฆฌํ„ดํ•ด ๋‹ฌ๋ผ๊ณ  ํ•˜๋Š”๋ฐ ๊ณ„์† object ๋ฆฌํ„ด๋˜๋Š” ๋ฌธ์ œ์˜€๋‹ค.

์›ํ•˜๋Š” ๊ฐ’์€ ๋งž๋Š”๋ฐ object ํƒ€์ž…์œผ๋กœ ๋‚˜์™€ ์•Œ์•„๋ณด๋‹ˆ
.then ๋‚ด๋ถ€์— ๋ฆฌํ„ด์„ ํ•ด์ค˜์•ผ promise๋กœ ๋ฆฌํ„ด๋˜๋Š” ๊ฑฐ ๊ฐ™๋‹ค.

์™ธ๋ถ€๋กœ ๋ฆฌํ„ดํ•  ๊ฒฝ์šฐ object๋กœ ๋ฆฌํ„ด๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

- ayns/awiat ์„ ์ด์šฉํ•œ fetch ์‚ฌ์šฉ

async function func(){
	await fech().then(response => response.json());
}
  • await๋Š” async ํ•จ์ˆ˜ ๋‚ด๋ถ€๋งŒ ์กด์žฌํ•˜๊ณ  async๊ฐ€ ์—†์ด await ์‚ฌ์šฉ ํ•  ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.

โœ”๏ธ Axios

  • ์จ๋“œ ํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  • ์ž๋™์œผ๋กœ json๋ฐ์ดํ„ฐ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ ๋œ๋‹ค.

- get() ์š”์ฒญ

  • ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ
    - ์ฒซ๋ฒˆ์งธ ์ธ์ž : url์ฃผ์†Œ (ํ•„์ˆ˜)
    - ๋‘๋ฒˆ์งธ ์ธ์ž : ์š”์ฒญ์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜ (ํ•„์ˆ˜x)
axios.get('url', [config])

- post() ์š”์ฒญ

  • ์„œ๋ฒ„์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ
    - ์ฒซ๋ฒˆ์งธ ์ธ์ž : url์ฃผ์†Œ (ํ•„์ˆ˜)
    - ๋‘๋ฒˆ์งธ ์ธ์ž : ์š”์ฒญ์‹œ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ ์„ค์ • (ํ•„์ˆ˜๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์„ค์ •)
axios.post

โœ๏ธ ๋งˆ์น˜๋ฉฐ

fetch API๋ฅผ ์ด์šฉํ•œ callback, promise, promise all, asyn/await๋ฅผ ์ฃผ์ œ๋กœํ•œ ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ–ˆ๋Š”๋ฐ

์ด๋ก ์œผ๋กœ ํ•˜๋Š” ๊ฑฐ ๋ณด๋‹จ ์ง์ ‘ ์ž‘์„ฑํ•ด ๋ด์•ผ ์ดํ•ด๊ฐ€ ๋˜๋Š”๊ฑฐ ๊ฐ™๋‹ค.

์ด๋ฒˆ ๊ธฐํšŒ๋ฅผ ํ†ตํ•ด ๋น„๋™๊ธฐ์— ๋Œ€ํ•ด ์ดํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ๊ณ 
promise all์„ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•˜๋‹ˆ ์ž์ฃผ ์—ฐ์Šตํ•ด ๋ด์•ผํ•  ๊ฑฐ ๊ฐ™๋‹ค.

๋‹ค์Œ ์ˆ˜์—…๋ถ€ํ„ฐ React๋ฅผ ๋ฐฐ์šด๋‹ค.
Javascript ๋Š” ์„ ํ–‰ํ•™์Šต์„ ํ–ˆ์ง€๋งŒ React๋Š” ๋ณ„๋กœ ๋ฐฐ์šด๊ฒŒ ์—†์–ด์„œ ์ด๋ฒˆ์— ๋ฏธ๋ฆฌ ์˜ˆ์Šตํ•ด์•ผ๊ฒ ๋‹ค.

profile
๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ชฉํ‘œ๋กœ ์„ฑ์žฅ ์ค‘! (์•Œ์•„๋ดค๋˜ ๋‚ด์šฉ ๋“ฑ์„ ์ •๋ฆฌํ•˜๊ธฐ)

0๊ฐœ์˜ ๋Œ“๊ธ€