이번에는 앞선 예제에서 search 부분을 집중적으로 살펴보도록 하겠습니다.
require('url'); // 생략 가능
const { URL } = url; // 생략 가능
const myURL = new URL('http://www.example.co.kr/audio/movieList.aspx?sercate1=001001000#anchor');
console.log('new URL():', myURL);
console.log('url.format():', url.format(myURL));
/* 출력
new URL(): URL {
href: 'http://www.example.co.kr/audio/movieList.aspx?sercate1=001001000#anchor',
origin: 'http://www.example.co.kr',
protocol: 'http:',
username: '',
password: '',
host: 'www.example.co.kr',
hostname: 'www.example.co.kr',
port: '',
pathname: '/audio/movieList.aspx',
search: '?sercate1=001001000',
searchParams: URLSearchParams { 'sercate1' => '001001000' },
hash: '#anchor'
}
url.format(): http://www.example.co.kr/audio/movieList.aspx?sercate1=001001000#anchor
*/
위 아티클에서 실행했던 예제를 보면, searchParams 객체가 있는 것을 알 수 있습니다. 우리가 URL에서 ?로 시작되며, 그 뒤에 key=value 형식으로 데이터를 전송하고 여러 개의 키는 &로 구분하는 형식입니다. 여기서 search를 다루기 위해서 searchParams라는 객체가 생성되고, 이를 통해서 쿼리스트링 영역을 사용하게 된다고 생각하면 되겠습니다.
아래 예제를 통해서 searchParams가 갖고 있는 다양한 메서드를 살펴보도록 하겠습니다.
const myURL = new URL('http://www.example.co.kr/?page=5&limit=99&category=pop&category=rock');
console.log('searchParams:', myURL.searchParams);
console.log('searchParams.getAll():', myURL.searchParams.getAll('category'));
console.log('searchParams.get():', myURL.searchParams.get('limit'));
console.log('searchParams.has():', myURL.searchParams.has('page'));
console.log('searchParams.keys():', myURL.searchParams.keys());
console.log('searchParams.values():', myURL.searchParams.values());
myURL.searchParams.append('filter', 'es3');
myURL.searchParams.append('filter', 'es5');
console.log(myURL.searchParams.getAll('filter'));
myURL.searchParams.set('filter', 'es6');
console.log(myURL.searchParams.getAll('filter'));
console.log('searchParams.toString():', myURL.searchParams.toString());
myURL.search = myURL.searchParams.toString();
/* 출력
searchParams: URLSearchParams { 'page' => '5', 'limit' => '99', 'category' => 'pop', 'category' => 'rock' }
searchParams.getAll(): [ 'pop', 'rock' ]
searchParams.get(): 99
searchParams.has(): true
searchParams.keys(): URLSearchParams Iterator { 'page', 'limit', 'category', 'category' }
searchParams.values(): URLSearchParams Iterator { '5', '99', 'pop', 'rock' }
[ 'es3', 'es5' ]
[ 'es6' ]
searchParams.toString(): page=5&limit=99&category=pop&category=rock&filter=es6
*/
참고로 위 예제에서 URL과 URLSearchParams 모두 내장 객체입니다. require('url')은 그래서 생략되었습니다. 우선 URL 생성자를 활용해 myURL이라는 주소 객체를 생성했고, myURL내의 searchParams 객체를 사용했네요. 참고로 myURL.searchParams 대신 new URLSearchParams(myURL.search)를 사용해도 동일한 결과를 얻을 수 있습니다.
• getAll(키) : 키에 해당하는 모든 값을 가져옴
• get(키) : 키에 해당하는 첫 번째 값만 가져옴
• has(키) : 해당 키가 있는지 없는지를 검사
• keys( ) : searchParams의 모든 키를 반복기(iterator) (ES2015 문법) 객체로 가져옴
• values(): searchParams의 모든 값을 반복기 객체로 가져옴
• append(키, 값): 해당 키를 추가. 같은 키의 값이 있다면 유지하고 하나 더 추가
• set(키, 값): append와 비슷하지만 같은 키의 값들을 모두 지우고 새로 추가
• delete(키): 해당 키를 제거
• toString(): 조작한 searchParams 객체를 다시 문자열로 만듬. 이 문자열을 search에 대입하면 주소 객체에 반영
'Programming > Node.js' 카테고리의 다른 글
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 7 [crypto] : 단방향 암호화 1 (0) | 2024.04.22 |
---|---|
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 6 [dns] (1) | 2024.04.19 |
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 5 [url 1/2] (0) | 2024.04.17 |
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 4 (0) | 2024.04.16 |
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 3 (0) | 2024.04.12 |