[Javascript] New URL(), New URLSearchParams()
New URL()
new URL()는 JavaScript에서 URL 객체를 생성하기 위한 생성자 함수입니다.
이 객체는 웹 주소를 구성하는 다양한 부분에 접근하고 조작할 수 있게 해줍니다.
예를 들어, 다음과 같은 URL이 있다고 가정해봅시다: https://www.example.com:8080/path?query=1#hash
이 URL을 new URL()을 사용해 객체로 만들어 보면 다음과 같습니다:
const url = new URL('https://www.example.com:8080/path?query=1#hash');
이제 url 객체를 사용하여 URL의 각 부분에 접근할 수 있습니다. 몇 가지 주요 속성은 다음과 같습니다
1. href: 전체 URL을 나타냅니다.
console.log(url.href); // "https://www.example.com:8080/path?query=1#hash"
2. protocol: URL의 프로토콜을 나타냅니다.
console.log(url.protocol); // "https:"
3. hostname: 호스트 이름 (도메인)을 나타냅니다.
console.log(url.hostname); // "www.example.com"
4. port: 포트 번호를 나타냅니다.
console.log(url.port); // "8080"
5. pathname: 경로를 나타냅니다.
console.log(url.pathname); // "/path"
6. search: 쿼리 문자열을 나타냅니다.
console.log(url.search); // "?query=1"
7. hash: 해시(fragment)를 나타냅니다.
console.log(url.hash); // "#hash"
8. searchParams:
URL 객체의 속성으로, 해당 URL의 쿼리 문자열을 파싱한 URLSearchParams 객체를 반환합니다.
이는 URL과 직접 연관된 상태에서 쿼리 문자열을 조작할 수 있게 합니다.
// URL 객체 생성
const url = new URL('https://www.example.com?name=John&age=30');
// searchParams를 통해 URLSearchParams 객체에 접근
const params = url.searchParams;
// 쿼리 문자열 조작
params.set('name', 'Doe');
params.append('city', 'New York');
// URL이 자동으로 업데이트됨
console.log(url.toString()); // "https://www.example.com/?name=Doe&age=30&city=New%20York"
이처럼 URL.searchParams를 사용하면 URL과 직접 연결되어 있어
쿼리 문자열을 조작할 때 URL 자체도 자동으로 업데이트됩니다.
New URLSearchParams
URLSearchParams는 URL의 쿼리 문자열을 쉽게 다룰 수 있도록 도와주는 JavaScript 생성자 함수입니다.
URL의 쿼리 문자열은 ? 이후에 오는 부분으로, 키와 값의 쌍으로 이루어진 데이터를 포함합니다.
URLSearchParams 객체를 사용하면 이 쿼리 문자열을 파싱하고, 추가, 수정, 삭제할 수 있습니다.
예를 들어, https://www.example.com/path?name=John&age=30이라는 URL의 쿼리 문자열을 다뤄보겠습니다:
const params = new URLSearchParams('name=John&age=30');
이제 params 객체를 사용하여 쿼리 문자열을 쉽게 다룰 수 있습니다. 몇 가지 주요 메서드는 다음과 같습니다:
1. get(): 특정 키의 값을 가져옵니다.
console.log(params.get('name')); // "John"
console.log(params.get('age')); // "30"
2. set(): 특정 키의 값을 설정합니다. --> *같은 키값이 있으면 덮고, 없으면 추가
params.set('name', 'Doe');
console.log(params.toString()); // "name=Doe&age=30"
3. append(): 새로운 키와 값을 추가합니다. --> * 같은 키값이 있어도 추가, 없어도 추가
params.append('city', 'New York');
console.log(params.toString()); // "name=Doe&age=30&city=New York"
4. delete(): 특정 키와 그 값을 삭제합니다.
params.delete('age');
console.log(params.toString()); // "name=Doe&city=New York"
5. has(): 특정 키가 있는지 확인합니다.
console.log(params.has('name')); // true
console.log(params.has('age')); // false
6. forEach(): 모든 키-값 쌍에 대해 반복 작업을 수행합니다.
params.forEach((value, key) => {
console.log(`${key}: ${value}`);
});
// 출력:
// name: Doe
// city: New York
new URL.searchParams와 new URLSearchParams의 차이점?
- 연결성:
- URL.searchParams: URL 객체와 직접 연관되어 있어 URL을 조작할 때 사용됩니다.
- URLSearchParams 생성자 함수: 독립적으로 쿼리 문자열을 다루며, 특정 URL과 연결되지 않습니다.
- 사용 맥락:
- URL.searchParams: URL 전체를 포함한 상황에서 쿼리 문자열을 조작할 때 유용합니다.
- URLSearchParams 생성자 함수: 독립적인 쿼리 문자열을 생성하거나 조작할 때 유용합니다.
- 자동 업데이트:
- URL.searchParams: 쿼리 문자열을 조작하면 URL 자체가 자동으로 업데이트됩니다.
- URLSearchParams 생성자 함수: 쿼리 문자열만 조작되며, URL 자체는 변경되지 않습니다.
이 두 가지 도구를 상황에 맞게 사용하면 URL과 관련된 작업을 더욱 효율적으로 수행할 수 있습니다.
'javascript' 카테고리의 다른 글
[Javascript] XSS(Cross-Site Scripting), CSRF(Cross-Site Request Forgery) (0) | 2024.06.19 |
---|---|
[Javascript] at(), slice(), splice() (1) | 2024.05.17 |
[Javascript] NanoId, @faker-js/faker (더미데이터 만들기) (0) | 2024.04.30 |
[Javascript] ESLint (.eslintrc) (1) | 2024.04.26 |
[Javascript] 진법 변환 (toString(), parseInt()) (0) | 2024.04.23 |
댓글