๊ตฌํ ํ๊ณ ์ ํ๋ ๊ฒ !!
URL ๋ก๋ถํฐ ๋ด๊ฐ ์ํ๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ !!
๊ณ ๋ฏผ์ด ์๊ธด ๋ถ๋ถ
ํญ์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๋ฐฑ์๋ ๊ธฐ๋ฅ์ test๋ ํ๋ฉฐ ๊ตฌํ์ ๋ง์น๊ณ ,,,
์ด์ ์ด ๊ธฐ๋ฅ์ ๋ ๊ฐ๋ฅผ ๋ฌ์์ค ํ๋ก ํธ ํ์ด์ง ์์
๋ ํ๋ฉด์ ํ๋ก ํธ์ ๋ฐฑ์ ์ฐ๊ฒฐํ๋ ๊ณผ์ ์์ ์ฐพ์์จ๋ค.
๋ฒํผ ํ๋์ ์ด๋ฒคํธ๋ฆฌ์ค๋ ์ผ๋ฌด์ง๊ฒ ๋ฌ๊ณ async await ์ผ๋ฌด์ง๊ฒ ์ฌ์ฉํ๊ณ ~
fetch ๋ก ๋ด๊ฐ ๊ตฌํํด๋์ ํด๋น API๋ก ๋ฐ์ดํฐ๋ ๋ ๋ฆฌ๊ณ ๊ฐ๊ณ ์ค๋๋ฐ ์ค์ํ๊ฑด
์ด๋ฐ API์ฃผ์์ด๋ค.
/api/user/:userId/resumes/:resume
param์ผ๋ก ๋ฐ์์ผ ํ๋ ๊ฐ ๋ฐ์ดํฐ์ ์ ๋ณด๊ฐ ๋ด๊ธด id๊ฐ์ ๋ฐฑ์์ ์ด๋ป๊ฒ ๊ฑด๋ด์ค์ผ๋๋....
์ด ๋ถ๋ถ์ ํญ์ project ์์ํ๋ฉด์ api ๋ช ์ธ๋ฅผ ์์ฑํ๋ฉด์ ๋ถํฐ ๊ณ ๋ฏผ์ด ์๊ธด๋ค.
์ง๊ธ ํ์ฌ๋ ํ์๋ค๊ณผ "์ฑ์ฉ ๊ณต๊ณ ์ฌ์ดํธ ๊ตฌํํ๊ธฐ" ํ๋ก์ ํธ๋ฅผ ์งํ์ค์ ์๋๋ฐ, ์ด์ ๋ฐฑ๋จ์ api๋ช ์ธ์ ์์ฑํ ํ์ ๊ธฐ๋ฅ์ ๊ตฌํ์ ๋ง์ณค๊ณ , ํ๋ก ํธ ํ์ด์ง ์์ ์ ํ๋ฉด์ ๋ด๊ฐ ํ๋ก ํธ์ ๋ฐฑ์ ์ฐ๊ฒฐํ๋ ์ญํ ์ ๋งก๊ณ ์๋ค.
์ด์ ๋ ์ ์ ๋ ๊ฐํด์ง๊ธฐ ์ํด์ ... !!
์ง๋๋ฒ ๊ฒฝํ์๋ ๋ญ ํ์ฌ ๋ธ๋ผ์ฐ์ ์ URL ๊ฐ์ ธ์์ ์ํ๋ ์ ๋ ฅ๊ฐ ๋ง๋ค๋ ค๊ณ split๋ ์ฐ๊ณ ๋ง ๊ทธ๋ฌ์๋๋ฐ,
๋ณด๋ค ๋ ํ์คํ ๋ฐฉ๋ฒ์ด ์กด์ฌํ์ง ์์๊น ํ๋ ์๊ฐ์ ๋ง์ ๋ถ๋ชํ๋ณด์ !! ํ๊ณ ํ์ฌ ์งํ์ค์ ์๋ค.
์๋ํ ๋ถ๋ถ
๊ฐ์ฅ ์ต๊ทผ์๋ window.location ๊ฐ์ฒด์ ๋ํด์ ์๊ฒ๋์๋ค.
๊ทธ๋์ ์ง๋ ํ๋ก์ ํธ์์๋ ์ผ๋ถ๋ฌ api ๋ช ์ธ๋ฅผ ์์ฑํ๋ฉด์ ๋ถํฐ ํ๋ก ํธ์ ๋ฐฑ๋จ์ ์ฐ๊ฒฐํ ๋ถ๋ถ์ ๋ฏธ๋ฆฌ ๊ณ ๋ คํด์ ํ์ํ param์ api์ ๋ค ์ง์ด๋ฃ์๋ค. (๋ญ ๊ทธ๋๋ดค์ userId / columnId ์ด๋ ๊ฒ 1~2๊ฐ ์์ค์ด์ง๋ง..)
์ฌ๊ธฐ์ ์ด๋ค ์ฝ๋๋ฅผ ์ฌ์ฉํ๋๋ฉด ์ด ์ฝ๋๋ค.
window.location.search
window ๊ฐ์ฒด
์ง๊ธ ๋น์ฅ ๊ทธ๋ฅ ๊ฐ๋ฐ์๋๊ตฌ ์ฐฝ ์ด์ด์ console.log(window) ๋ง ์ณ๋ด๋ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ค์ด ๋์ค๋ ๊ฒ์ ์ ์ ์๋ค.
window.location
์ด ์ค์์ ๋ด๋ฆฌ๋ค ๋ณด๋ฉด window ๊ฐ์ฒด๊ฐ ๊ฐ์ง ๋ฐ์ดํฐ ์ค์ location์ด๋ผ๋ ์์๊ฐ ์๋ค.
๊ทธ ๋ ์์ ์ด์ด๋ณด๋ฉด ์์ ๋ด๊ฐ ์ํ๋ ์์์ ํ๊ณ ์๋ url์ด ๊ตฌ์ฑ์์ ๋ณ๋ก ๋์ด๋ ๋์ด์๊ณ ~
์ ๋ถ ๋ค ๋์์๋ ์์๋ ์๋ค !!!
์ฌ๊ธฐ์ search ๋ผ๋ ์์์ ๋ฐ์ดํฐ๋ฅผ ์ดํด๋ดค๋ค.
window.location.search
search ์์๋ฅผ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์๋ค์ query ๋ฌธ์ผ๋ก ๊ฐ๊ณ ์๋๊ฑธ ๋ณผ ์ ์๋ค.
์ ๋ ์์ ์ด์ฉํด ๋๋ ํ์ํ ์์์ ๊ณจ๋ผ ์ฐ๊ณ ,
๊ฑ๋ฅผ ์๋ณ์์ ํ ๋นํด์ ๋ด๊ฐ ์ํ๋ ๋ฐ์ดํฐ๊ฐ ๋ด๊ฒจ์๋ API ์ฃผ์๋ก fetch๋ฅผ ๋ณด๋ผ๊บผ๋ค.
์์
const params = new URLSearchParams(window.location.search);
const userId = params.get('id');
const resumeId = params.get('resumeId');
์ค์ ํ๋ก์ ํธ์์๋ ์ฌ์ฉํ ์ฝ๋์ด๋ค.
์ ์ฝ๋๋ก ๋ด๊ฐ ์ํ๋ param์ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
param.get ์ด๋ url์์ ?type=post ์๋ก ๋ ์๋ค ์์ "=" ๊ธฐ์ค์ผ๋ก ์์๋ key๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๋ค์ ๋ ์์ ๊ทธ key๊ฐ ๊ฐ์ง๊ณ ์๋ value ๊ฐ์ด๋ค.
๋ด uri์์๋ id ๋ผ๋ key ๊ฐ์ userId ๊ทธ๋ฆฌ๊ณ resumeId ๊ฐ์๋ resumeId ๊ฐ ๋ค์ด์์๋ค.
const userData = await fetch(`/api/users/user/${userId}`);
const userEducationData = await fetch(`/api/educations/${resumeId}`);
์์ ๊ฐ์ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ํด์ ํ์ํ ์์๋ค์ด๋ค.
์ด๋ฐ์์ผ๋ก ํ์ํ ์์์ ๊ฐ์ ธ์์ ๋ด๊ฐ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ ์ ์๋ค.
์๋กญ๊ฒ ์๋์ค์ธ ๊ฒ
๊ทธ๋ผ ์ด์ ๋ด๊ฐ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ป๊ธฐ์ํด fetch๋ฅผ ๋ณด๋ผ๊ฑด๋ฐ api์ ๋ค์ด๊ฐ์ผํ๋ ํ์ ์์์ ํ๋ก ํธ URL์์ ์ป์ด๋ด์ง ๋ชปํ๋ค๋ฉด??
์ด๋ป๊ฒ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๋ฉด ๋์ง ???
๊ถ๊ธํด์ก๋ค ์ด๋ด ๋๊ฐ ๋ถ๋ช ์์๊ฒ ๊ฐ์๋ฐ ๋ง์ด์ง.. ์ด๋ด๋ ์ด๋กํ์ง ???
๊ถ๊ธํด์ ์ง๊ธ ์ค์ ๋ก ๊ทธ๋ ๊ฒ ํด๋ณด๊ณ ์๋ค.
#window #location #search #window_๊ฐ์ฒด #f12 #cmd_opt_i
'JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] : URL์์ ์์์ ๋ชป๊ฐ์ ธ ์ค๋๊ฒฝ์ฐ (0) | 2023.08.28 |
---|---|
[JS] : this binding (0) | 2023.07.28 |
[JS] : ์์ ๋ณต์ฌ / ๊น์ ๋ณต์ฌ (0) | 2023.07.27 |
[JS] : Call By Value / Call By Reference (0) | 2023.07.27 |
[JS] : ์กฐ๊ฑด๋ถ ์คํ / ์ผํญ ์ฐ์ฐ์์ ๋จ์ถํ๊ฐ (0) | 2023.07.26 |