url
모듈은 Nodejs의 built-in module로서 url 정보를 객체로 가져와서 분석하고, 처리해주는 역할을 한다.
const url = require('url');
url 문자열을 url
객체로 변환하여 리턴하며, 해당 객체에는 url 문자열을 분석한 여러 정보들이 담겨있다.
url.parse(urlStr, [parseQueryString], [slashesDenoteHost])
urlStr
<string> 분석할 url 문자열parseQueryString
<boolean> 반환되는 객체의 query
속성 값에 영향을 끼치는 파라미터. 기본 값은 false
이다.true
일 시, query
속성 값이querystring
모듈의 parse()
메서드에 의해 반환된 객체가 된다.false
일 시, query
속성 값이 문자열 객체가 된다.slashesDenoteHost
<bollean> 반환되는 객체의 host
와 pathname
에 영향을 끼치는 파라미터. 기본 값은 false
이다.true
일 시, 문자열 //
다음에 오는 첫번째 토큰부터 /
를 만나기까지의 문자열이 host
가 된다.false
일 시, 그렇지 않다.//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
모듈도 nodejs의 built-in 모듈이며, url 쿼리 스트링을 해석하고 포맷팅할 수 있다. 다만, express
를 사용한다면, querystring
보다는 body-parser
를 사용한다.
const qs = require('querystring');
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.query 객체를 문자열로 바꾸어주는 역할을 한다.
qs.stringify(obj, [sep], [eq])
str
<Object> query string으로 변환할 query 객체를 넣는다.sep
<string> separator로 기본값은 '&'이다. 쿼리가 여러개 있을 때, 쿼리와 쿼리 간 구분자 역할을 한다.eq
<string> assignment 역할을 하며, 기본 값은 '='이다.
잘보고 갑니다. 노드 어렵네요 ㅠㅠ