[Nodejs] url을 분석을 도와주는 Url, Querystring 모듈

DongHwan·2021년 5월 19일
0

nodejs

목록 보기
3/11
post-custom-banner

url 모듈

url 모듈은 Nodejs의 built-in module로서 url 정보를 객체로 가져와서 분석하고, 처리해주는 역할을 한다.

const url = require('url');

url.parse()

url 문자열을 url 객체로 변환하여 리턴하며, 해당 객체에는 url 문자열을 분석한 여러 정보들이 담겨있다.

url.parse(urlStr, [parseQueryString], [slashesDenoteHost])
  • urlStr <string> 분석할 url 문자열
  • parseQueryString <boolean> 반환되는 객체의 query 속성 값에 영향을 끼치는 파라미터. 기본 값은 false이다.
    • true일 시, query 속성 값이querystring 모듈의 parse() 메서드에 의해 반환된 객체가 된다.
    • false일 시, query 속성 값이 문자열 객체가 된다.
  • slashesDenoteHost <bollean> 반환되는 객체의 hostpathname에 영향을 끼치는 파라미터. 기본 값은 false이다.
    • true일 시, 문자열 // 다음에 오는 첫번째 토큰부터 /를 만나기까지의 문자열이 host가 된다.
    • false일 시, 그렇지 않다.
    • ex) //foo/bar가 주어질 시, true{host: 'foo', pathname: '/bar'}, false{pathname: '//foo/bar'}

사용은 다음과 같이 하면 된다.

const url = require('url');

const urlStr = 'http://1.1.1.1:8080/foo/bar?id=1&name=aa';
const q1 = url.parse(urlStr, true);
const q2 = url.parse(urlStr);

console.log(q1);
console.log(q2);

// console
Url {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: '1.1.1.1:8080',
  port: '8080',
  hostname: '1.1.1.1',
  hash: null,
  search: '?id=1&name=aa',
  query: [Object: null prototype] { id: '1', name: 'aa' },
  pathname: '/foo/bar',
  path: '/foo/bar?id=1&name=aa',
  href: 'http://1.1.1.1:8080/foo/bar?id=1&name=aa'
}

Url {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: '1.1.1.1:8080',
  port: '8080',
  hostname: '1.1.1.1',
  hash: null,
  search: '?id=1&name=aa',
  query: 'id=1&name=aa',
  pathname: '/foo/bar',
  path: '/foo/bar?id=1&name=aa',
  href: 'http://1.1.1.1:8080/foo/bar?id=1&name=aa'
}

querystring

querystring 모듈도 nodejs의 built-in 모듈이며, url 쿼리 스트링을 해석하고 포맷팅할 수 있다. 다만, express를 사용한다면, querystring보다는 body-parser를 사용한다.

const qs = require('querystring');

querystring.parse()

url query string을 분석하여 객체로 반환해준다.

qs.parse(str, [sep], [eq], [options])
  • str <string> 분석할 query string을 넣는다.
  • sep <string> separator로 기본값은 '&'이다. 쿼리가 여러개 있을 때, 쿼리와 쿼리 간 구분자 역할을 한다.
  • eq <string> assignment 역할을 하며, 기본 값은 '='이다.
  • options <Object>
    • decodeURIComponent <Function> query string 안의 percent-encoded 된 문자들을 디코딩할 때 사용할 함수를 넣어준다. Default: querystring.unescape().
    • maxKeys <number> 파싱할 키의 최대 개수를 저장할 수 있다. 0일시, 제한없음. Default: 1000.

querystring.stringify()

query 객체를 문자열로 바꾸어주는 역할을 한다.

qs.stringify(obj, [sep], [eq])
  • str <Object> query string으로 변환할 query 객체를 넣는다.
  • sep <string> separator로 기본값은 '&'이다. 쿼리가 여러개 있을 때, 쿼리와 쿼리 간 구분자 역할을 한다.
  • eq <string> assignment 역할을 하며, 기본 값은 '='이다.
profile
날 어떻게 한줄로 소개해~
post-custom-banner

3개의 댓글

comment-user-thumbnail
2022년 2월 13일

잘보고 갑니다. 노드 어렵네요 ㅠㅠ

1개의 답글