๐ ์๋ฐ์คํฌ๋ฆฝํธ URL ๊ฐ์ฒด ์ฌ์ฉ๋ฒ
URL ๊ฐ์ฒด
์ด์ ์๋ window.location.href๋ฅผ ํตํด url๋ฌธ์์ด์ ์ป์ด์ ๋ฌธ์์ด ํ์ฑ์ ํตํด ์ฟผ๋ฆฌ ์คํธ๋ง์ ์ฌ์ฉํ์๋ค. ํ์ง๋ง ์ด์ url ์ ๋ณด๊ฐ๋ค์ ๊ฐ์ฒด๋ก ๋ฐ์์ ๊ฐํธํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค.
๊ธฐ๋ณธ ์ ๊ณต URL ํด๋์ค๋ URL ์ ๋ง๋ค๊ณ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ ์ํ ํธ๋ฆฌํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค.
// ์ฌ์ดํธ ์ฃผ์ ์ป๊ธฐ
const link = window.location.href;
// "http://testurl.co.kr:8080/path/main.html?param1=1¶m2=3#top"
var url = new URL(link);
/* url ๊ฐ์ฒด ์ ๋ณด */
{
protocol: "http:" // ํ๋กํ ์ฝ
hostname: "testurl.co.kr" // ๋๋ฉ์ธ, ์์ดํผ
port: "8080" // ํฌํธ
host: "testurl.co.kr:8080" // ์๋ฒ ์ฃผ์
origin: "http://testurl.co.kr:8080" // ํ๋กํ ์ฝ, ์๋ฒ์ด๋ฆ, ํฌํธ ํฌํจ
href: "http://testurl.co.kr:8080/path/main.html?param1=1¶m2=3#top" // ์ ์ฒด๊ฒฝ๋ก
pathname: "/path/main.html" // ์๋ฒ ์์ ์์น
hash: "top" // #ํด์ ์์น
search: "?param1=1¶m2=3" // ์ฟผ๋ฆฌ์คํธ๋ง
searchParams: URLSearchParams {} // ์ฟผ๋ฆฌ์คํธ๋ง์ ๋ฉ์๋๋ฅผ ํตํด ๋ชจ๋ํ
username: "" // HTTP ์ธ์ฆ์ด์๋ ๊ฒฝ์ฐ ์์ฑ
password: "" // HTTP ์ธ์ฆ์ด์๋ ๊ฒฝ์ฐ ์์ฑ
}
์์ ์ฝ๋๋ javascript๋ก URL๊ฐ์ฒด๋ฅผ ์์ฑํ ๊ฒ์ด๋ค. URL๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ ์์ฑ์์ ๊ธฐ๋ณธ์ ์ธ URL์ ์ ๋ ฅํด์ฃผ์ด์ผ ํ๋ค.
'http://'๋๋ 'https://'๋ถํฐ url ํ์์ ๋ง๊ฒ ์์ฑํด์ผํ๋ค.
URL Parameter ๊ฐ ๋ค๋ฃจ๊ธฐ
๊ฐ์ ์ ๋ฌํ๊ธฐ ์ํด์ getํ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ๋๋ฐ, search์์ฑ์ผ๋ก url์ ํ๋ผ๋ฏธํฐ๋ถ๋ถ์ ๊ทธ๋๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค. searchParams ์์ฑ์, ๋ ํ๋์ ๊ฐ์ฒด๋ก ์ด๋ฃจ์ด์ ธ ์๋๋ฐ ์ด๋ฅผ ์ฌ์ฉ๋ฉด ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐํธํ๊ฒ ๋ค๋ฃฐ ์ ์๋ค.
urlSearchParams.get()
: urlSearchParams์ .get('parameterName')์ ํด๋น parameterName์ผ๋ก ์กฐํ๋๋ ์ฒซ๋ฒ์งธ ๊ฐ์ returnํ๋ค.
urlSearchParams.getAll()
: urlSearchParams์ .getAll("parameterName")์ parameterName์ผ๋ก ์กฐํ๋๋ ๋ชจ๋ ๊ฐ์ ๋ฐฐ์ด๋ก returnํ๋ค.
const urlStr = 'https://gillog/post/1?tag=javascript&like=backend';
const url = new URL(urlStr);
const urlParams = url.searchParams; // URLSearchParams ๊ฐ์ฒด๋ฅผ ๋ฃ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
const tag = urlParams.get('tag'); // ์ฟผ๋ฆฌ์คํธ๋ง์ tag๋ผ๋ ํค์ ๊ฐ์ ๊ฐ์ ธ์จ๋ค.
console.log(tag); // javascript
const like = urlParams.get('like');
console.log(like) // backend
urlSearchParams.keys()
: parameter์ ํด๋นํ๋ key๋ค์ ์ํํ ์ ์๋ iterator๋ฅผ returnํ๋ค.
urlSearchParams.values()
: parameter์ ํด๋นํ๋ value๋ค์ ์ํํ ์ ์๋ iterator๋ฅผ returnํ๋ค.
urlSearchParams.entries()
: parameter์ ํด๋นํ๋ key์ value๋ค์ ์ํํ ์ ์๋ iterator๋ฅผ returnํ๋ค.
// ์ฟผ๋ฆฌ์คํธ๋ง ๋ถ๋ถ์ URLSearchParams๊ฐ์ฒด์ ๋ฐ๋ก ์ค์ ์ฌ์ฉํ ์๋ ์๋ค.
const urlParams = new URLSearchParams("?gil=test&log=what&gillog=holy");
const keys = urlParams.keys();
// gil
// log
// gillog
const values = urlParams.values();
// test
// what
// holy
const entries = urlParams.entries();
// gil, test
// log, what
// gillog, holy
urlSearchParams.has()
: parameterName์ ํด๋นํ๋ Parameter๊ฐ ์๋์ง ํ์ธํ ์ ์๋ค.
const urlParams = new URLSearchParams("?gil=123&log=456&gillog=777");
// true
console.log(urlParams.has("gillog"));
// false
console.log(urlParams.has("loggil"));
urlSearchParams.append()
: parameter๋ฅผ ์ถ๊ฐ
let urlParams = new URLSearchParams("?gil=test");
urlParams.append("log", "yes");
urlParams.append("log", "no");
// ?gil=test&log=yes&log=no
console.log(urlParams);
urlSearchParams.set()
: parameter์ value๊ฐ์ ๋ณ๊ฒฝ. ๋ง์ฝ ์กด์ฌํ์ง ์๋ parameterName์ด๋ผ๋ฉด append ๋๋ค.
let urlParams = new URLSearchParams("?gil=test&log=yes&log=no");
urlParams.set("gil", "yes");
urlParams.set("log", "wow");
urlParams.set("gillog", "good");
// ?gil=yes&log=wow&gillog=good
console.log(urlParams);
urlSearchParams.delete()
: parameter๋ฅผ ์ ๊ฑฐ
url.searchParams.delete("param1")
# ์ฐธ๊ณ ์๋ฃ
https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
https://javascript.info/url
https://velog.io/@gillog/javaScript-URL-Parameter-%EA%B0%92-%EB%8B%A4%EB%A3%A8%EA%B8%B0