[React] API์™€ React์˜ fetch()๐Ÿ’ก

ํ™ฉ๊ทœ๋นˆยท2022๋…„ 5์›” 7์ผ
3

React

๋ชฉ๋ก ๋ณด๊ธฐ
3/7
post-thumbnail

๐Ÿ’Ž ๊ฐœ์š”

5์›”์˜ ์ฒซ ๊ฒŒ์‹œ๊ธ€์ด๋‹ค!! ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ ์„ธ์…˜์„ ์ง„ํ–‰ํ•ด๋ณด๋ฉด์„œ API์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋“ค์„ ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ, ์ด ๋•Œ ๋‚˜๋„ ์กธํ”„์—์„œ fetch๋ฅผ ์ด์šฉํ•œ ํ†ต์‹ ์„ React์—์„œ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ฆฌํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์–ด ์ด๋ฅผ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. API๋Š” ๋ฐ˜๋“œ์‹œ!! ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋ฉด์„œ ์ด API๋ฅผ ์•ž์œผ๋กœ๋„ ํ†ต์‹ ํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์˜ ์—ญํ• ์ด ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•˜๊ฒŒ ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผํ•  ์ ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋ฅผ ์ •๋ฆฌํ•ด๋ณด๊ณ  ์ถ”ํ›„์— ๋‚ด๊ฐ€ ํ—ท๊ฐˆ๋ฆฌ๊ฑฐ๋‚˜ ๊ฐœ๋…์„ ์ •๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ด ๊ธ€์„ ์ฐพ์•„์™€์„œ ๋„์›€์„ ์ฐพ๊ณ ์ž ์ž‘์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค!!

๐Ÿซ ์ฐธ๊ณ ์ž๋ฃŒ

๐Ÿ‘‰ ๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ ์„ธ์…˜ ์ž๋ฃŒ
๐Ÿ‘‰ https://meetup.toast.com/posts/92 (Rest API)
๐Ÿ‘‰ https://studyandwrite.tistory.com/368 (React fetch())

๐Ÿ’Ž API

๐Ÿซ API๋ž€?

๋จผ์ € API๊ฐ€ ๋ฌด์—‡์ผ๊นŒ??

๊ฐ„๋‹จํ•œ ์˜ˆ๋กœ ์œ„ ์‚ฌ์ง„์„ ๋“ค ์ˆ˜ ์žˆ์„ํ…๋ฐ ์ ์›์ด ๊ณ ๊ฐ์—๊ฒŒ ๋ฉ”๋‰ด๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์ด๋ฅผ ์ฃผ๋ฌธ๋ฐ›์•„ ์ฃผ๋ฐฉ์— ์ „๋‹ฌํ•œ๋‹ค. ๋‹ค์‹œ ์ ์›์€ ๋‚˜์˜จ ๋ฉ”๋‰ด๋ฅผ ๊ณ ๊ฐ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ •์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด ๋•Œ ์ ์›์ด ๋ฐ”๋กœ API ๋‹ค!!

Application Programming Interface์˜ ์ค„์ธ๋ง์ธ API๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์›€์„ ์ฃผ๋Š” ๋งค๊ฐœ์ฒด์ด๋‹ค. ๋งŒ์•ฝ ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ ์‚ฌ์ด์˜ ํ†ต์‹ ์„ ์ด์•ผ๊ธฐํ•œ๋‹ค๋ฉด ์ด๋Š” ํ”„๋ก ํŠธ์—”๋“œ๋Š” API๋กœ ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ๋ฐ›๊ฑฐ๋‚˜ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐฑ์—”๋“œ๋Š” API๋ฅผ ์ •๋ณด๋ฅผ ๋ฐ›์•„ ์ด๋ฅผ ๋‹ค์‹œ ๋ณด๋‚ด์ค„ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์ธ ๊ฒƒ์ด๋‹ค!!

๊ทธ๋ ‡๋‹ค๋ฉด API๋Š” ๋ˆ„๊ตฌ๋“ ์ง€ ์“ธ ์ˆ˜ ์žˆ์„๊นŒ??

  1. Private API
  2. Partner API
  3. Public API

์œ„์™€ ๊ฐ™์ด API์—๋„ ์ข…๋ฅ˜๊ฐ€ ๋‹ค์–‘ํ•˜๋‹ค ๋‹จ์–ด ๋œป ๊ทธ๋Œ€๋กœ ๊ณต๊ฐœ๋˜์–ด ์žˆ๊ฑฐ๋‚˜, ๊ทธ๋ ‡์ง€ ์•Š๊ฑฐ๋‚˜, ํŠน์ • ์‚ฌ๋žŒ์—๊ฒŒ ๊ถŒํ•œ์„ ์ฃผ๋Š” API๋“ค์ด ์กด์žฌํ•œ๋‹ค. ๋Œ€์ฒด๋กœ Open API๋“ค์„ ์ด์šฉํ•˜์—ฌ ์šฐ๋ฆฌ๋“ค์€ ๋„ค์ด๋ฒ„, ์นด์นด์˜ค ๋“ฑ๊ณผ ๊ฐ™์€ ๊ธฐ์—…์—์„œ ์ œ๊ณตํ•˜๋Š” ์ •๋ณด๋“ค์„ ํ™œ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜๋„ ์žˆ๋‹ค!!

๐Ÿซ Rest API

API๋ฅผ ์„ค๋ช…ํ•˜์˜€๋‹ค๋ฉด Rest API๋ผ๋Š” ๊ฒƒ๋„ ์ง€๋‚˜๊ฐ€๋‹ค ๋“ค์—ˆ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Š” Representational State Transfer์˜ ์•ฝ์ž๋กœ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด์„œ ์ปดํ“จํ„ฐ๋“ค๋ผ๋ฆฌ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์ด๋‹ค!! ์ด๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๋ชจ๋ธ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ์Œ์„ ์•Œ๋ ค์ฃผ๋ฉฐ ์ „๋‹ฌํ•˜๋ ค๋Š” ๋‚ด์šฉ๋“ค์ด ๋‘ ์ง€์ ๋“ค์„ ์™•๋ณตํ•˜์—ฌ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์ด๋‹ค!!

๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ž์›(RESOURCE) - URI
  • ํ–‰์œ„(Verb) - HTTP METHOD
  • ํ‘œํ˜„(Representations)

์œ„์™€ ๊ฐ™์ด Rest API์—์„œ ์ค‘์š”ํ•œ ์ ์€
์ฒซ ๋ฒˆ์งธ, URI๋Š” ์ •๋ณด์˜ ์ž์›์„ ํ‘œํ˜„ํ•ด์•ผ ํ•œ๋‹ค.
๋‘ ๋ฒˆ์งธ, ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„๋Š” HTTP Method(GET, POST, PUT, DELETE)๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ์‹์˜ ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ์„ ํ•˜๊ณ ์ž ํ•˜๋Š”์ง€์™€ ๊ฐ€์ ธ์˜ค๋Š” ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด Rest API์˜ ๊ทœ์น™์ด๋‹ค!!
์˜ˆ๋ฅผ ๋“ค๋ฉด

GET /members/delete/1

์™€ ๊ฐ™์ด delete์— ๋Œ€ํ•œ ์ž์›์˜ ํ–‰์œ„๊ฐ€ ์ •๋ณด๋กœ ๋“ค์–ด๊ฐ€๋ฉด ์•ˆ๋˜๊ตฌ

DELETE /members/1

์ด๋Ÿฐ ์‹์œผ๋กœ ์ž์›์ด ์–ด๋–ค ์‹์œผ๋กœ ํ†ต์‹ ํ• ์ง€ ํ–‰์œ„๋ฅผ DELETE์™€ ๊ฐ™์€ method๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ‘œํ˜„ํ•ด์ค€๋‹ค!!

๋˜ ์ถ”๊ฐ€๋กœ Rest API๋Š” ๋‹จ์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์  ๋•Œ๋ฌธ์—ย ํ•ด๋‹น API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์ด ๋™์ผํ•œ ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด์„œ ์ ‘์†ํ•ด์•ผ ํ•˜๊ณ , ๊ทธ ๋ฐฉ์‹์ด ๋‹จ์ˆœํ•˜๊ฒŒ ๋œ๋‹ค.ย 

Rest๋Š” ์›น์— ์ตœ์ ํ™”๋˜์–ด์žˆ๊ณ , ์ฃผ์š” ๋ฐ์ดํ„ฐ ํฌ๋งท์ด jsonํ˜•์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” React์—์„œ ํ˜ธํ™˜์„ฑ์ด ๊ต‰์žฅํžˆ ์ข‹๊ตฌ ์„ฑ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ์ด ์ข‹๋‹ค!!

์ฃผ์š” Rest์˜ ์ •๋ณด๋ฅผ ์ •๋ฆฌํ•ด๋ณด์ž๋ฉด

  1. ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์ด๋‹ค.
  2. ๋ฐ์ดํ„ฐ ์œ„์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•ด์„œ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•œ๋‹ค.
  3. ์ผ๋ฐ˜ ํ…์ŠคํŠธ, HTML, XML, JSON๋“ฑ ๋‹ค์–‘ํ•œ ํฌ๋งท์„ ํ—ˆ์šฉํ•œ๋‹ค.
  4. SSL(์•”ํ˜ธํ™” ๊ธฐ๋ฐ˜ ์ธํ„ฐ๋„ท ๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ)๊ณผ HTTPS(๋ฌด๊ฒฐ์„ฑ๊ณผ ๊ธฐ๋ฐ€์„ฑ์„ ์œ ์ง€)๋ฅผ ์ง€์›ํ•œ๋‹ค.
  5. ๋ฐ์ดํ„ฐ ์บ์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๋กœ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค!!!

๐Ÿ’Ž React Fetch

๐Ÿซ Fetch๋ž€??

์•ž์„œ API์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค!! ๊ทธ๋ ‡๋‹ค๋ฉด React์—์„œ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜์˜€๋˜ ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉํ•˜๊ฒŒ๋  fetch๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด์ž!!

fetch๋ž€ HTTP ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•˜๋Š” ์š”์ฒญ๊ณผ ์‘๋‹ต ๋“ฑ์˜ ์š”์†Œ๋ฅผ JavaScript์—์„œ ์ ‘๊ทผํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค!! fetch๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๋ฐ›๋Š” ๊ฒƒ์€ ๊ต‰์žฅํžˆ ๊ฐ„ํŽธํ•˜๊ณ  ์‰ฌ์šธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ json ํ˜•์‹์„ ๊ฐ€์ ธ์˜ค๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜๊ธฐ๋„ ์‰ฝ๋‹ค!! ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ fetch๋ฅผ ๋‚ด๊ฐ€ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜์˜€๋Š”์ง€์™€ ์‚ฌ์šฉํ•œ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด์ž.

๐Ÿซ fetch() ์‚ฌ์šฉํ•˜๊ธฐ

fetch(url)
  .then(function(response) {
    return response.json();
  })
  .then(function(myJson) {
    console.log(JSON.stringify(myJson));
  });

์œ„๋Š” fetch๋ฅผ ์‚ฌ์šฉํ•œ ์˜ˆ์ œ์ด๋‹ค.
url์€ ๊ณง ๊ฐ€์ ธ์˜ค๊ณ ์žํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ์ฃผ์†Œ์ง€ ์ด๋ฉฐ ์—ฌ๊ธฐ์„œ ํ†ต์‹ ํ•ด์„œ ์šฐ๋ฆฌ๊ฐ€ response๋ฅผ ํ†ตํ•ด jsonํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค!!

์—ฌ๊ธฐ์„œ default๋กœ method๋Š” GET์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉฐ ์šฐ๋ฆฌ๋Š” method๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด GET/POST/HEAD/PUT/DELETE/OPTION/PATH ๋“ฑ๋“ฑ ๋‹ค์–‘ํ•œ Method๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค!!

๋˜ํ•œ headers๋Š” Request Header๋ฅผ ์ง€์ •ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋‚˜, body ๊ฐ™์€ HTTP Request์— ์‹ค์„ ๋ฐ์ดํ„ฐ๋ฅผ ์„ค๋ช…ํ•˜์—ฌ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํƒ€์ž…์„ ๋„ฃ๊ณ  ๊ฐ์ฒด ํƒ€์ž…(json)ํ˜•์‹์œผ๋กœ ๋ณด๋‚ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋‹ค.

fetch(url, {
        method: 'POST', // *GET, POST, PUT, DELETE, etc.
        headers: {
            'Content-Type': 'application/json',
            // 'Content-Type': 'application/x-www-form-urlencoded',
        },
        body: JSON.stringify(data),
    })
    .then(response => response.json()); 

์œ„์™€ ๊ฐ™์€ ์˜ˆ์‹œ์ด๋‹ค!!

๊ทธ๋Ÿฌ๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‚ด๊ฐ€ ์–ด๋–ค ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ต์‹ ํ–ˆ๋Š”์ง€ ์กธํ”„์—์„œ ์‚ฌ์šฉํ•œ fetchํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜๊ณ ์ž ํ•œ๋‹ค!!

const [content, setContent] = useState([]);
.
.
.
  useEffect(() => {
  fetch(url).then(
    response=>{
        return response.json();
    }
    ).then(data=>{
        setContent(data);
    }
  );
.
.
.
return(
.
.
	<h2 className={style.question}>Q{question}. {content.content} </h2>
.
.
);

์œ„ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด content๋ผ๋Š” jsonํ˜•์‹์„ ๋ฐ›์„ ๋ฐฐ์—ด์„ useState๋ฅผ ํ†ตํ•ด ์„ ์–ธํ•ด ์ค€๋‹ค. ์ด๋ฅผ useEffect๋ฅผ ํ†ตํ•ด ๋ฐ›์•„์˜จ ์ •๋ณด๋ฅผ ๋ฐ”๋กœ ๋ Œ๋”๋ง ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— useEffect()๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ทธ ์•ˆ์— fetchํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œ์ผœ์ฃผ์—ˆ๋‹ค.

url์€ ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” json ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์ด๋ฉฐ ์ด๋ฅผ fetch๋ฅผ ํ†ตํ•ด response๋ฅผ ์ด์šฉํ•˜์—ฌ jsonํ˜•์‹์˜ ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์˜จ๋‹ค!! ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” .then ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ํ•จ์ˆ˜์ธ fetch๋ฅผ ๋™๊ธฐํ•จ์ˆ˜์ธ .then์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ›์•„์˜จ ๊ฐ์ฒด์˜ ๊ฐ’์„ setState()๋ฅผ ์ด์šฉํ•˜์—ฌ ์•„๊นŒ ์„ ์–ธํ•œ content ๋ฐฐ์—ด์— ์ €์žฅ์‹œ์ผœ ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค!!

์ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด API ํ†ต์‹ ์„ ๋งˆ์ณ ๊ฐ’์„ ๊ฐ€์ ธ์™”์œผ๋ฉฐ ์ด๋ฅผ ํ™œ์šฉํ• ๋ ค๋ฉด ์•„๊นŒ ์ €์žฅํ•œ content์—์„œ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋œ๋‹ค!! ์ด ๋•Œ content๋ผ๋Š” ํ•ญ๋ชฉ์˜ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์™€์„œ ๋ Œ๋”๋งํ•  ๊ฒƒ์ด๋ฏ€๋กœ content.content๋ฅผ {}๋กœ ๊ฐ์‹ธ์ฃผ์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ์ฒ˜๋Ÿผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค!!(๋™๊ทธ๋ผ๋ฏธ ์นœ๊ฒŒ ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜จ๊ฑฐ)

๐Ÿ’Ž ์ •๋ฆฌํ•˜๋ฉด์„œ

ํœด ์ด๋ ‡๊ฒŒ API๊ฐ€ ๋ฌด์—‡์ธ์ง€, React์—์„œ API ํ†ต์‹ ์„ ์œ„ํ•œ fetch์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค!! ์กธํ”„๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๊ทธ๋ฆฌ๊ณ  ์ตœ๊ทผ ์˜ฌ๋ผ์˜จ ์ธํ„ด ๊ณต๊ณ ๋“ค์„ ํ™•์ธํ•ด๋ณด๋ฉด์„œ Restful API๋‚˜ API ํ†ต์‹ ๊ณผ์ •์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ๋Š๊ผˆ์—ˆ๋Š”๋ฐ, ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ ์„ธ์…˜๊ณผ ํ•จ๊ป˜ ๊ทธ๋ฆฌ๊ณ  ๊ตฌ๊ธ€๋ง๊ณผ ์กธํ”„๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค!!
์š”์ƒˆ ๋„ˆ๋ฌด๋„ˆ๋ฌด ๋ฐ”์˜๊ธฐ๋„ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋‚ด ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ์Œ“๊ณ  ํ”„๋ก ํŠธ์—”๋“œ ๊ณต๋ถ€๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์„์ง€ ๊ณ ๋ฏผ์„ ๋งŽ์ดํ–ˆ์—ˆ๋Š”๋ฐ ์˜คํžˆ๋ ค ๊ณต๊ณ ๋“ค์„ ๋ณด๋ฉด์„œ ๋‚ด๊ฐ€ ๋ฌด์—‡์„ ๊ณต๋ถ€ํ•ด์•ผ ๊ฒ ๊ตฌ๋‚˜๋ฅผ ์กฐ๊ธˆ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๋ฐ”์˜๋ฉด์„œ ๋‚ด๊ฐ€ ํ•ด์•ผํ•  ๋ฐฉํ–ฅ์„ฑ์„ ์ฐพ๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋‹คํ–‰์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค!!

์•ž์œผ๋กœ๋Š” React์— ๋Œ€ํ•œ ์‹ฌํ™” ๊ณผ์ •์„ ๊ณต๋ถ€ํ•ด๋ณผ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ javascript, typescript์— ๋Œ€ํ•œ ๋ฌธ๋ฒ•์„ ํƒ„ํƒ„ํžˆ ๋‹ค์ง€๋„๋ก ๊ณต๋ถ€ํ•ด๋ณด๊ตฌ, vue.js์™€ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ๋ Œ๋”๋ง์˜ SSR(Next.js, Nuxt.js), ๊ทธ๋ฆฌ๊ณ  ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Redux๊ฐ€ ๋ญ”์ง€๋„ ์ฐจ์ฐจ ๊ณต๋ถ€ํ•ด๋‚˜๊ฐ€๋ณด๋„๋ก ํ•˜์ž!!

๋ถˆ๊ณผ ๊ฑฐ์˜ 6๊ฐœ์›”๋งŒ์— ์ด๋งŒํผ์ด๋‚˜ ํ•ด๋ƒˆ๋‹ค. ๋‹ค์‹œ 6๊ฐœ์›”์ด ์ง€๋‚˜๋ฉด ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ํก์ˆ˜ํ•ด ์žˆ์„์ง€ ๊ธฐ๋Œ€ํ•ด๋ณด๊ณ  ๋” ๋งŽ์ด ์ž๊ทน๋ฐ›๋„๋ก ํ•˜์ž.

ํ™”์ดํŒ…!!

profile
์•ˆ๋…•ํ•˜์„ธ์šค

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