1. url

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.)

1 ) 레거시 API

레거시 URL API는 url.parse()url.format(), url.resolve() 등을 통해 URL을 분석하거나 조작할 수 있습니다.

url.parse(urlString[, parseQueryString][, slashesDenoteHost])

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)

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>'