-
[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๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์ถ์ฒ๊ฐ ์ ํํ ์์์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
๋ฐ์ํ'codeStates front-end > Job Preparation' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ