๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
JS

[JS] : URL ์—์„œ ์ž์›(๋ฐ์ดํ„ฐ) ๊ฐ€์ ธ์˜ค๊ธฐ

by ๊ถŒ์Šพํ–„ 2023. 8. 24.

๊ตฌํ˜„ ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ !!

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