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 공식 문서를 참고하면 된다..!

해당링크: https://nodejs.org/dist/latest-v18.x/docs/api/