urljoin - Functional

지정된 모든 URL 세그먼트를 함께 결합한 다음 결과 URL을 정규화한다.

String.join( '/')을 사용하여 URL 세그먼트를 결합한 다음 다양한 정규 표현식과 함께 일련의 String.replace() 호출을 사용하여 결과 URL을 표준화한다.

  1. 이중 슬래시 제거
  2. 프로토콜에 적절한 슬래시 추가
  3. 매개 변수 앞의 슬래시 제거
  4. 매개 변수 결합 & 및 첫 번째 매개 변수 구분 기호를 표준화
const URLJoin = (...args) =>
  args
    .join('/')
    .replace(/[\/]+/g, '/')
    .replace(/^(.+):\//, '$1://')
    .replace(/^file:/, 'file:/')
    .replace(/\/(\?|&|#[^!])/g, '$1')
    .replace(/\?/g, '&')
    .replace('&', '?')

// 예시
URLJoin('http://www.google.com', 'a', '/b/cd', '?foo=123', '?bar=foo') // 'http://www.google.com/a/b/cd?foo=123&bar=foo'