ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [job preparation] ๊ธฐ์ˆ  ๋ฉด์ ‘3 - JS, HTTP/๋„คํŠธ์›Œํฌ, ์›น์„œ๋ฒ„ ๊ธฐ์ดˆ
    codeStates front-end/Job Preparation 2023. 2. 10. 12:05
    ๋ฐ˜์‘ํ˜•

     

    ๐Ÿ“Œ๊ธฐ์ˆ  ๋ฉด์ ‘ tip!

     

    ๊ฒฐ๋ก ์€ ๊ฐ„๋‹จํ•˜๊ฒŒ, ์„ค๋ช…์€ ๊ตฌ์ฒด์ ์œผ๋กœ ์ž์‹ ์˜ ์–ธ์–ด๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ
    ๊ฐ„๋ช…ํ•œ ์ •๋ฆฌ์™€ ํ’๋ถ€ํ•œ ์„ค๋ช…์„ ์œ„ํ•ด์„œ๋Š” ์ง€์†์ ์ธ ๋ชจ์˜ ๋ฉด์ ‘์„ ํ†ตํ•ด ๊ธฐ์ˆ  ์„ค๋ช…์„ ์—ฐ์Šตํ•˜๊ณ ,
    ์–ด๋ ค์šด ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ๊นŠ๊ฒŒ ๊ณ ๋ฏผํ•˜๊ณ  ๋ธ”๋กœ๊ทธ์— ๊ธฐ๋กํ•˜๋Š” ์—ฐ์Šต์ด ํ•„์š”

     

     

    ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„

     

    JavaScript

     

    ๐Ÿง Promise์˜ ๊ธฐ๋Šฅ๊ณผ ํ•„์š”ํ•œ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

     

    ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค ๋น„๋™๊ธฐ๋ž€ ํŠน์ • ์ฝ”๋“œ์˜ ์‹คํ–‰์ด ์™„๋ฃŒ๋ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํŠน์„ฑ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋ฏธ์Šค๋Š” ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , fetch๋“ฑ์œผ๋กœ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜จ ๋’ค ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ๋ฐ›์•„์˜จ ๋’ค ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ํ”„๋กœ๋ฏธ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

     

     

    ๐Ÿง ์ˆœ์ˆ˜ํ•จ์ˆ˜๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? ๋ถˆ๋ณ€์„ฑ๊ณผ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

     

    ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ผ ์ˆœ์ˆ˜ํ•จ์ˆ˜๋ž€ ์˜ค์ง ํ•จ์ˆ˜์˜ ์ž…๋ ฅ๋งŒ์ด ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.  ์ˆœ์ˆ˜ํ•จ์ˆ˜๋Š” ๋„คํŠธ์›Œํฌ ์š”์ฒญ๊ณผ ๊ฐ™์€ ์‚ฌ์ด๋“œ ์ดํŒฉํŠธ๋Š” ์—†๊ณ , ์ž…๋ ฅ์œผ๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š” ๋ถˆ๋ณ€์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

     

     

    React

     

    ๐Ÿง  React์˜ state์™€ props์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

     

    ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ผ  state๋Š” ์‚ด๋ฉด์„œ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’, props๋Š” ์„ฑ๋ณ„์ด๋‚˜ ์ด๋ฆ„์ฒ˜๋Ÿผ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ ์ฆ‰ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋˜๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค

    react๋Š” props ํ•จ์ˆ˜์˜ ์ „๋‹ฌ์ธ์ €์ฒ˜๋Ÿผ ์ „๋‹ฌ ๋ฐ›์•„ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ™”๋ฉด์— ์–ด๋–ป๊ฒŒ ํ‘œ์‹œ๋˜๋Š”์ง€๋ฅผ ๊ธฐ์ˆ ํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ 

    state๋Š” input์˜ value๊ฐ™์ด ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์„ ์“ธ ๋•Œ state๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

     

     

    ๐Ÿง React ์ปดํฌ๋„ŒํŠธ์˜ key ์†์„ฑ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

     

    ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ผ Key๋Š” React๊ฐ€ ์–ด๋–ค ํ•ญ๋ชฉ์„ ๋ณ€๊ฒฝ, ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œํ• ์ง€ ์‹๋ณ„ํ•˜๋Š” ๊ฒƒ์„ ๋•์Šต๋‹ˆ๋‹ค. key์†์„ฑ์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์—ฌ๋Ÿฟ ๋ Œ๋”ฉํ•  ๋•Œ

    ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์ž„์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋˜๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค.

     

     

    ๐Ÿง useEffect์˜ dependency array์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

     

    ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ผ  useeffect๋ž€ ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ํŠน์ • ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” event hook์ž…๋‹ˆ๋‹ค

    useeffect๋Š” ์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋ฐ›๊ณ  ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ ๋ฐฐ์—ด์„ ๋ฐ›๋Š”๋ฐ ์ด ๋ฐฐ์—ด์ด dependency array์ž…๋‹ˆ๋‹ค

    ์ข…์†์„ฑ ๋ฐฐ์—ด์ด๋ผ๊ณ ๋„ ํ•˜๋ฉฐ ๋ Œ๋”๋ง ์‹œ ๋ฐฐ์—ด์˜ ๊ฐ’์ด ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค ๋งŒ์•ฝ ๋นˆ ๋ฐฐ์—ด๋กœ ์ „๋‹ฌ๋œ๋‹ค๋ฉด ์ฒซ ๋ Œ๋”๋ง์‹œ์—๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

     

     

     

    HTTP/๋„คํŠธ์›Œํฌ

     

    ๐Ÿง  CSR๊ณผ SSR์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

     

    ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ผ ์ฃผ์š” ์ฐจ์ด์ ์€ ๋ Œ๋”๋ง ์œ„์น˜์ž…๋‹ˆ๋‹ค ssr์€ ์„œ๋ฒ„์—์„œ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๊ณ  crs๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค

     

     

    ๐Ÿง GET ๋ฉ”์„œ๋“œ์™€ POST ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

     

    ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ผ GET๋ฉ”์„œ๋“œ๋Š” ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์กฐํšŒํ•˜๊ณ  POST ๋ฉ”์„œ๋“œ๋Š” ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” HTTP๋ฉ”์„œ๋“œ ์ž…๋‹ˆ๋‹ค

    GET์€ ๋‹จ์ˆœํžˆ ์กฐํšŒ๋ฅผ ์š”์ฒญํ•˜๊ธฐ ๋•Œ๋ฌธ์— body๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋ณดํŽธ์ ์ด๊ณ  query parameter๋‚˜ path parameter๋ฅผ ์“ฐ๋ฉฐ ๋ฌดํ•œ๋Œ€ ์š”์ฒญ์„ ๋ณด๋‚ด๋„ ํšŒ์‹  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋ฉฑ๋“ฑ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  POST๋Š” ๋ฆฌ์†Œ์Šค์˜ ์ƒ์„ฑ ๋ฐ ๋ณ€๊ฒฝ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์—, body์— ์›ํ•˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž์„ธํ•˜๊ฒŒ ์ ์œผ๋ฉฐ, ๋ฉฑ๋“ฑ์„ฑ์€ ์—†์Šต๋‹ˆ๋‹ค. 

     

     

     

    ์›น์„œ๋ฒ„ ๊ธฐ์ดˆ

     

    ๐Ÿง HTTP ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

     

    ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ผ HTTP ๋ฉ”์‹œ์ง€๋Š” ํฌ๊ฒŒ start-line, header์™€ body๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. start-line์€ ์–ด๋–ค ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š”์ง€, ์–ด๋–ค HTTP ๋ฉ”์„œ๋“œ์ธ์ง€, ์ƒํƒœ ์ฝ”๋“œ๋Š” ๋ฌด์—‡์ธ์ง€ ๋“ฑ ํ•ด๋‹น ์š”์ฒญ / ์‘๋‹ต์˜ ํ•ต์‹ฌ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค.
    header๋Š” ์š”์ฒญ/์‘๋‹ต์—์„œ ๊ณตํ†ต์œผ๋กœ ์ž์ฃผ ๋‹ค๋ฃจ๋Š” ์ •๋ณด๋“ค์ด ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด body์˜ Content-type์ด ๋ฌด์—‡์ธ์ง€, ์บ์‹œ์˜ ์œ ํšจ ๊ธฐ๊ฐ„์€ ์–ผ๋งˆ๋‚˜ ๋˜๋Š”์ง€ ๋“ฑ ๊ณตํ†ต์œผ๋กœ ์ž์ฃผ ์ฃผ๊ณ ๋ฐ›๋Š” ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ์Šต๋‹ˆ๋‹ค. body๋Š” ํ•ด๋‹น ์š”์ฒญ/ ์‘๋‹ต์—์„œ ๊ผญ ๋‹ค๋ค„์•ผ ํ•˜๋Š” ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ์ถ”๊ฐ€/๋ณ€๊ฒฝ/์‚ญ์ œํ•˜๊ณ  ์‹ถ์€ ๋ฆฌ์†Œ์Šค์˜ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ธฐ๋„ ํ•˜๊ณ , ์‘๋‹ต์˜ ๊ฒฝ์šฐ ์š”์ฒญ์ž๊ฐ€ ๊ผญ ์•Œ์•„์•ผํ•˜๋Š” ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

     

     

    ๐Ÿง  SOP CORS์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

     

    ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ผ sop๋Š” ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค ์ถœ์ฒ˜๋Š” ํ”„๋กœํ† ์ฝœ,ํ˜ธ์ŠคํŠธ,ํฌํŠธ์˜ ์กฐํ•ฉ์ด๋ฉฐ, ์„ธ๊ฐ€์ง€ ๋ชจ๋‘ ๋™์ผํ•ด์•ผ ๊ฐ™์€ ์ถœ์ฒ˜๋กœ ์ธ์ •๋ฐ›์Šต๋‹ˆ๋‹ค. ๋ณด์•ˆ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ํ•˜๊ธฐ ์œ„ํ•ด ์ด ์ •์ฑ…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค ์ด ๋•Œ ๋‹ค๋ฅธ ์ถœ์ฒ˜๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ›์•„์˜ฌ ๋•Œ ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ ์ธ cors๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ์ถœ์ฒ˜๊ฐ€ ์„ ํƒํ•œ ์ž์›์ œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

     

     

     

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.