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 역할을 하며, 기본 값은 '='이다.
잘보고 갑니다. 노드 어렵네요 ㅠㅠ