Node.js
Node.js 내장 모듈 - url
김핵센
2023. 5. 4. 22:30
오늘은 Node.js에서 제공하는 내장 모듈인 url에 대해 알아볼 것이다.
위 이미지는 url의 각 구성 요소에 대한 속성을 보여주고 있다.
url 기준 상단은 기존 노드 방식이고 하단은 WHATWG 방식이다.
주소에 대한 명칭을 두 가지 단체(Node, WHATWG)에서 다르게 일컫는다.
예를 들어 https://www.naver.com/login 이란 주소가 있는데 주소를 받을 때 /login 이라는 앞단이 잘린 주소를 받으면 WHATWG 방식으로는 해석을 못한다.
이럴 때 기존 노드 방식을 사용하면 된다.
url 모듈 사용 방법
const url = require('url');
const { URL } = url;
const myURL = new URL('http://www.gilbut.co.kr/book/bookList.aspx?sercate1=001001000#anchor');
console.log('new URL():', myURL);
console.log('url.format():', url.format(myURL));
콘솔 결과
쿼리 스트링을 처리하는 방식으로는 두 가지가 있다.
1. searchParmas(WHATWG 방식)
const myURL = new URL('http://www.gilbut.co.kr/?page=3&limit=10&category=nodejs&category=javascript');
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'));
myURL.searchParams.delete('filter');
console.log(myURL.searchParams.getAll('filter'));
console.log('searchParams.toString():', myURL.searchParams.toString());
myURL.search = myURL.searchParams.toString();
콘솔 결과
2. querystring(기존 노드 방식)
const url = require('url');
const querystring = require('querystring');
const parseUrl = url.parse(
'http://www.gilbut.co.kr/?page=3&limit=10&category=nodejs&category=javascript'
);
const query = querystring.parse(parseUrl.query);
console.log('querystring.parse():', query);
console.log('querystring.stringify():', querystring.stringify(query));
콘솔 결과
searchParams 에는기능이 많다는 장점이 있다.
대신 간단한 기능을 원한다면 기존 노드 방식인 querystring 모듈을 사용하면 된다.
searchParams 메소드의 다양한 기능을 알아보고 싶다면 Node.js 공식 문서를 참고하면 된다..!