url
모듈은 Node.js에서 URL을 파싱하거나 생성하는 데 사용되는 내장 모듈입니다. 이 모듈은 URL을 쉽게 분석하고, 구성 요소로 분리하거나, 수정할 수 있도록 도와줍니다. 특히, 웹 애플리케이션 개발 시 HTTP 요청 처리나 리소스 주소 관리 등에 유용하게 활용됩니다.
Node.js의 url
모듈은 두 가지 방식으로 사용할 수 있습니다.
1 ) 레거시 API (Node.js 7 이전)
2 ) WHATWG(웹 표준) URL API (Node.js 8부터 지원)
┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│ href │
├──────────┬──┬─────────────────────┬────────────────────────┬───────────────────────────┬───────┤
│ protocol │ │ auth │ host │ path │ hash │
│ │ │ ├─────────────────┬──────┼──────────┬────────────────┤ │
│ │ │ │ hostname │ port │ pathname │ search │ │
│ │ │ │ │ │ ├─┬──────────────┤ │
│ │ │ │ │ │ │ │ query │ │
" https: // user : pass @ sub.example.com : 8080 /p/a/t/h ? query=string #hash "
│ │ │ │ │ hostname │ port │ │ │ │
│ │ │ │ ├─────────────────┴──────┤ │ │ │
│ protocol │ │ username │ password │ host │ │ │ │
├──────────┴──┼──────────┴──────────┼────────────────────────┤ │ │ │
│ origin │ │ origin │ pathname │ search │ hash │
├─────────────┴─────────────────────┴────────────────────────┴──────────┴────────────────┴───────┤
│ href │
└────────────────────────────────────────────────────────────────────────────────────────────────┘
(All spaces in the "" line should be ignored. They are purely for formatting.)
레거시 URL API는 url.parse()
와 url.format()
, url.resolve()
등을 통해 URL을 분석하거나 조작할 수 있습니다.
url.parse(urlString[, parseQueryString][, slashesDenoteHost])
parseQueryString
이 true
이면, 쿼리 문자열을 객체로 변환합니다.const url = require('url');
const parsedUrl = url.parse('<https://example.com:8080/path/name?query=string#hash>', true);
console.log(parsedUrl.hostname); // 'example.com'
console.log(parsedUrl.port); // '8080'
console.log(parsedUrl.pathname); // '/path/name'
console.log(parsedUrl.query); // { query: 'string' }
console.log(parsedUrl.hash); // '#hash'
url.format(urlObject)
url.parse()
로 분석된 URL 객체를 다시 문자열로 반환합니다.const url = require('url');
const parsedUrl = {
protocol: 'https:',
hostname: 'example.com',
port: '8080',
pathname: '/path/name',
query: { query: 'string' },
hash: '#hash'
};
console.log(url.format(parsedUrl)); // '<https://example.com:8080/path/name?query=string#hash>'
url.resolve(from, to)
const url = require('url');
console.log(url.resolve('<https://example.com/path/>', 'subpath'));
// '<https://example.com/path/subpath>'
console.log(url.resolve('<https://example.com/path/>', '/subpath'));
// '<https://example.com/subpath>'