fetch ๐Ÿพ

Bonnie Ryuยท2020๋…„ 11์›” 14์ผ
1

Network ๐Ÿงณ

๋ชฉ๋ก ๋ณด๊ธฐ
3/3
post-custom-banner

๋ชฉ์ฐจ
1. fetch()
2. fetchํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด backend API๋ถ™์ด๊ธฐ

Ajax์˜ ํฌ์ŠคํŒ…์€ ์š”๊ธฐ์—์„œ ๐Ÿ™

๋‘๊ทผ๋‘๊ทผ +_+ !
์˜ค๋Š˜์€ backend๋ถ„๋“ค์ด ๋งŒ๋“  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ fetchํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋‚ด๊ฐ€ ๋งŒ๋“  ์œ„์Šคํƒ€๊ทธ๋žจ ๋กœ๊ทธ์ธ์ฐฝ์—์„œ ์œ ํšจ์„ฑ ์ฒดํฌ๋ฅผ ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์œ ํšจํ•œ ๊ฐ’์„ ๋„˜๊ธฐ๋ฉด ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ท€์—ฌ์šด ํ† ํฐ๋“ค๋„ ๋ฐ›์•˜๋‹ค!

1. fetch() ??

1-1. fetch์˜ ๊ธฐ๋Šฅ

  • ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•  ๋•Œ ๊นŒ์ง€ ๋‹ค๋ฅธ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ฉ”์„œ๋“œ
  • fetch()์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ์ธ์ž๊ฐ’๋งŒ ์„œ๋ฒ„ ์‘๋‹ต์ด ๋๋‚œ ํ›„ ์‹คํ–‰๋˜๊ณ , ๋‚˜๋จธ์ง€ ์š”์†Œ๋“ค์€ ์„œ๋ฒ„์‘๋‹ต๊ณผ ์ƒ๊ด€์—†์ด ์‹คํ–‰ํ•œ๋‹ค.
    -> ๊ทธ๋ ‡๋‹ค! ๋น„๋™๊ธฐ(Asynchronous)์ด๋‹ค!

๊ธฐ๋ณธ ๋ฌธ๋ฒ•

let promise = fetch(url, [options])

response / request header๋ถ€๋ถ„์€ ๋ณ„๋„๋กœ ๋‹ค๋ฃจ์ง€ ์•Š๊ฒ ๋‹ค.

ํ•จ์ˆ˜ ์„ค๋ช…

  • GET ์ด์™ธ์˜ ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ์ถ”๊ฐ€ ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

  • method : GET, POST, PATCH ๋“ฑ http method๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

  • body : ๋ฌธ์ž์—ด(์˜ˆ : JSON)

  • ํ†ต์‹ ์„ ํ•  ๋•Œ๋Š” string ํ˜•ํƒœ์˜ JSON์œผ๋กœ ๋ณด๋‚ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— JSON.stringify()๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•ด์„œ ํฌ๋งท์„ ๊ธฐ์กด์˜ Object์—์„œ String์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค.

  • ํ†ต์‹ ์€ ๋‹ค๋ฅธ ๋กœ์ง์— ๋น„ํ•ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ผ์„œ then ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

2. fetchํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด backend API๋ถˆ๋Ÿฌ์˜ค๊ธฐ

backend์—์„œ ์ž‘์—…ํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์ด ๋“ค์–ด์žˆ๋Š” ์„œ๋ฒ„ ์ฃผ์†Œ๋ฅผ API๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ์ง€์ •ํ•ด๋‘๊ณ ๐Ÿ˜ƒ, fetchํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ํ†ต์‹ ์„ ์‹œ์ž‘ํ•œ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ์—์„œ
์ฒซ ๋ฒˆ์งธ then์—์„œ๋Š” server์—์„œ ๋ณด๋‚ด์ค€ response๋ฅผ Object ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๊ณ 
๋‘ ๋ฒˆ์งธ then์—์„œ๋Š” object๋กœ ๋ณ€ํ™˜ํ•œ response๋ฅผ console.log๋กœ ํ™•์ธํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ ์›ํ•˜๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค!
fetchํ•จ์ˆ˜ ๋‚ด body๋ถ€๋ถ„์˜ ํ•ญ๋ชฉ์€ backend์—์„œ ์ง€์ •ํ•œ key์™€ ์ผ์น˜ํ•ด์•ผํ•œ๋‹ค.(๋ฐ์ดํ„ฐ typeํ™•์ธ ์œ ์˜!!)

์œ„์˜ Authorization์€ ์ƒ๋Œ€ backend๋ถ„์˜ key๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋ฉด ์šฐ์„  ๋‚˜์˜ local storage์— ๋‹ด๊ธฐ๊ฒŒ ๋˜๋Š”๋ฐ ๋ฏธ์ฒ˜ ๊ทธ๊ฒƒ๊นŒ์ง€ ํ™•์ธํ•˜์ง€ ๋ชปํ•˜์—ฌ ์ฒซ ํ† ํฐ๋“ค์„ ๋‹ค ์บก์ณํ•ด๋ฒ„๋ ธ๋‹ค...๐Ÿ˜„

์ฝ˜์†”์ฐฝ์— ์ฐํžŒ ๊ฐ’๋“ค์ด ๋ญ๋ผ๊ณ .. ์™œ์ด๋ ‡๊ฒŒ ๊ท€์—ฝ๋‹ˆ!! ๋„ˆํฌ๋“ค๐Ÿฅฒ ย  ์•ž์œผ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€ํ•ด์ค„๊ฒŒ๐Ÿ’›

์ „๋‹ฌ๋ฐ›์€ ํ† ํฐ๋“ค์„ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก JWT(์กด๋ง›ํƒฑ ์•„๋‹˜)์— ๋Œ€ํ•ด์„œ๋„ ํ•™์Šตํ•  ์˜ˆ์ •์ด๋‹ค!

profile
Ryuwisdom
post-custom-banner

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