๐Ÿชด React

[React] ๋น„๋™๊ธฐ ํ†ต์‹  - fetch (+ axios์— ๋น„ํ•ด ๋ถˆํŽธํ•œ ์ )

๋ จ๋”” 2024. 2. 19. 20:56
SMALL

240219 TIL ๐ŸŽถ

 


 

๋Œ€ํ‘œ์ ์ธ ๋น„๋™๊ธฐ ํ†ต์‹  ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” 

axios์™€ fetch๊ฐ€ ์žˆ๋‹ค.

์ด๋ฒˆ์—๋Š” fetch์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ axios์— ๋น„ํ•ด ๊ฐ€์ง„ ๋‹จ์ ์„ ์•Œ์•„๋ณด์ž :)

 

Fetch

๋จผ์ € Fetch๋Š”,
ES6๋ถ€ํ„ฐ ๋„์ž…๋œ Javascript ๋‚ด์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, Promise ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ํ†ต์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.
๋‚ด์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— (axios์™€ ๋‹ฌ๋ฆฌ) ๋ณ„๋„์˜ ์„ค์น˜ ๋ฐ import๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค

  • BUT, axios์— ๋น„ํ•ด ๋‹จ์ ์ด ์žˆ๋‹ค.
    • ๋ฏธ์ง€์› ๋ธŒ๋ผ์šฐ์ € ์กด์žฌ
    • ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ถˆ์นœ์ ˆํ•œ response
    • axios์— ๋น„ํ•ด ๋ถ€์กฑํ•œ ๊ธฐ๋Šฅ

 

 

 

 axios์— ๋น„ํ•ด ๋ถˆํŽธํ•œ ๋‹จ์ ์€ ํฌ๊ฒŒ ๋‹ค์Œ์˜ ๋‘ ์ผ€์ด์Šค์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  1) ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ฌ ๋•Œ   

  2) ์—๋Ÿฌ ์ฒ˜๋ฆฌ ์‹œ   

 

 

 

   1) ์˜ˆ๋ฅผ ๋“ค์–ด,  ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ฌ ๋•Œ์˜ ๋‹จ์ ์€,

  • ์•„๋ž˜์™€ ๊ฐ™์ด json์œผ๋กœ (๊ท€์ฐฎ๊ฒŒ..ใ…Žใ…Ž) ๋”ฐ๋กœ ๋ณ€ํ™˜ํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค!  ๋‘๊ฐœ์˜ .then() ์ด ํ•„์š”   
fetch(url)
.then((response) => response.json())
.then(console.log);
  • (๋ฐ˜๋ฉด  axios๋Š” ์‘๋‹ต์„ ๊ธฐ๋ณธ์ ์œผ๋กœ jsonํฌ๋งท์œผ๋กœ ์ œ๊ณตํ•ด์คŒ)

 

 

 

2) ์—๋Ÿฌ ์ฒ˜๋ฆฌ ์‹œ, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ผ์ผํžˆ then ( ) ์•ˆ์— ๋ชจ๋“  ์ผ€์ด์Šค์— ๋Œ€ํ•œ http ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค..! 

(catch( ) ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋„คํŠธ์›Œํฌ ์žฅ์•  ์ผ€์ด์Šค์ผ ๋ฟ)

fetch(url)
  .then((response) => {
    if (!response.ok) {
      throw new Error(
        `This is an HTTP error: The status is ${response.status}`
      );
    }
    return response.json();
  })
  .then(console.log)
  .catch((err) => {
    console.log(err.message);
  });

 

 

- (๋ฐ˜๋ฉด axios๋Š” ๊ณง๋ฐ”๋กœ ์—๋Ÿฌ ํ•ธ๋“ค๋ง์ด ๊ฐ€๋Šฅ. ์—๋Ÿฌ ๊ฐ์ฒด๊ฐ€ response๋ฅผ ์ƒ์„ธํ•˜๊ฒŒ ์ค€๋‹ค.  const { status, config } = err.response; ์ด๋Ÿฐ ์‹์œผ๋กœ)

 

SMALL