Skip to content

getParsedInfoFromAddress

주소 문자열을 각 구성요소로 파싱하여 객체로 반환합니다. 일반적인 웹 URL뿐만 아니라 호스트만 있는 주소, IPv4, IPv6(맨몸 또는 []로 감싼 형태), 그리고 ssh://user:pass@host:port처럼 사용자 정보를 포함하는 SSH 스타일 접속 문자열도 처리합니다.

파싱 규칙은 의도적으로 범용적입니다.

  • 프로토콜은 문자열에 ://가 포함된 경우에만 인식됩니다(따라서 host:1234host 스킴이 아니라 호스트와 포트로 취급됩니다). 반환 시 대문자로 변환됩니다.
  • 스킴, 포트, 사용자 정보에 기본값을 채우지 않습니다. 입력에 없는 값은 undefined(JavaScript) 또는 null(Dart/Python)로 반환됩니다.
  • 사용자 정보는 마지막 @를 기준으로 호스트와 분리하고, 사용자와 비밀번호는 첫번째 :를 기준으로 분리합니다. 이렇게 하면 비밀번호 안에 포함된 @:가 보존됩니다.
  • 맨몸 IPv6 주소(::1, fe80::1)는 콜론이 2개 이상인 것으로 판별하며 포트를 가질 수 없습니다. 포트를 붙이려면 대괄호로 감싸야 합니다([::1]:22). 대괄호는 호스트의 일부로 유지됩니다.
  • 경로, 쿼리, 프래그먼트(첫 /, ?, # 이후의 모든 것)는 버려집니다.
  • error는 입력을 파싱할 수 없는 경우(빈 입력, 잘못된 포트, 닫히지 않은 [)에만 true가 됩니다. 단순히 값이 없는 것은 error를 설정하지 않습니다.

Parameters

  • url::string

Returns

object

Examples

javascript
getParsedInfoFromAddress('ssh://test:pass@host:1234');
getParsedInfoFromAddress('https://google.com');
getParsedInfoFromAddress('[fe80::f9e9:1d57:9f2d:fb87]:1234');
dart
getParsedInfoFromAddress('ssh://test:pass@host:1234');
getParsedInfoFromAddress('https://google.com');
getParsedInfoFromAddress('[fe80::f9e9:1d57:9f2d:fb87]:1234');
python
getParsedInfoFromAddress('ssh://test:pass@host:1234')
getParsedInfoFromAddress('https://google.com')
getParsedInfoFromAddress('[fe80::f9e9:1d57:9f2d:fb87]:1234')

반환값 예시:

json5
// getParsedInfoFromAddress('ssh://test:pass@host:1234')
{
	error: false,
	protocol: 'SSH',
	host: 'host',
	port: 1234,
	user: 'test',
	pass: 'pass'
}

// getParsedInfoFromAddress('https://google.com')
// 없는 값은 `undefined`(JavaScript) 또는 `null`(Dart/Python)입니다.
{
	error: false,
	protocol: 'HTTPS',
	host: 'google.com',
	port: undefined,
	user: undefined,
	pass: undefined
}

// getParsedInfoFromAddress('host:abc') -> 잘못된 포트
{
	error: true,
	protocol: undefined,
	host: 'host',
	port: undefined,
	user: undefined,
	pass: undefined
}

Released under the MIT License