Skip to content

쿼리 문자열

[Stable: 2 - 안정적]

Stable: 2 안정성: 2 - 안정적

소스 코드: lib/querystring.js

node:querystring 모듈은 URL 쿼리 문자열을 파싱하고 포맷하는 유틸리티를 제공합니다. 다음과 같이 액세스할 수 있습니다:

js
const querystring = require('node:querystring')

querystring<URLSearchParams>보다 성능이 좋지만 표준화된 API는 아닙니다. 성능이 중요하지 않거나 브라우저 코드와의 호환성이 필요한 경우에는 <URLSearchParams>를 사용하십시오.

querystring.decode()

추가됨: v0.1.99

querystring.decode() 함수는 querystring.parse()의 별칭입니다.

querystring.encode()

추가됨: v0.1.99

querystring.encode() 함수는 querystring.stringify()의 별칭입니다.

querystring.escape(str)

추가됨: v0.1.25

querystring.escape() 메서드는 URL 쿼리 문자열의 특정 요구 사항에 최적화된 방식으로 주어진 str에 대해 URL 퍼센트 인코딩을 수행합니다.

querystring.escape() 메서드는 querystring.stringify()에 의해 사용되며 일반적으로 직접적으로 사용될 것으로 예상되지 않습니다. 주로 응용 프로그램 코드가 필요한 경우 querystring.escape를 대체 함수에 할당하여 대체 퍼센트 인코딩 구현을 제공할 수 있도록 내보내집니다.

querystring.parse(str[, sep[, eq[, options]]])

[기록]

버전변경 사항
v8.0.0이제 여러 개의 빈 항목이 올바르게 파싱됩니다 (예: &=&=).
v6.0.0반환된 객체는 더 이상 Object.prototype에서 상속되지 않습니다.
v6.0.0, v4.2.4eq 매개변수의 길이가 1보다 클 수 있습니다.
v0.1.25추가됨: v0.1.25
  • str <string> 파싱할 URL 쿼리 문자열
  • sep <string> 쿼리 문자열에서 키와 값 쌍을 구분하는 데 사용되는 부분 문자열입니다. 기본값: '&'.
  • eq <string>. 쿼리 문자열에서 키와 값을 구분하는 데 사용되는 부분 문자열입니다. 기본값: '='.
  • options <Object>
    • decodeURIComponent <Function> 쿼리 문자열에서 퍼센트 인코딩된 문자를 디코딩할 때 사용할 함수입니다. 기본값: querystring.unescape().
    • maxKeys <number> 파싱할 최대 키 수를 지정합니다. 키 계산 제한을 제거하려면 0을 지정하십시오. 기본값: 1000.

querystring.parse() 메서드는 URL 쿼리 문자열(str)을 키와 값 쌍의 컬렉션으로 파싱합니다.

예를 들어, 쿼리 문자열 'foo=bar&abc=xyz&abc=123'은 다음과 같이 파싱됩니다:

json
{
  "foo": "bar",
  "abc": ["xyz", "123"]
}

querystring.parse() 메서드에 의해 반환된 객체는 JavaScript Object에서 원형적으로 상속되지 않습니다. 이는 obj.toString(), obj.hasOwnProperty() 등과 같은 일반적인 Object 메서드가 정의되지 않고 작동하지 않음을 의미합니다.

기본적으로 쿼리 문자열 내의 퍼센트 인코딩된 문자는 UTF-8 인코딩을 사용하는 것으로 간주됩니다. 대체 문자 인코딩이 사용되는 경우 대체 decodeURIComponent 옵션을 지정해야 합니다:

js
// gbkDecodeURIComponent 함수가 이미 존재한다고 가정합니다...

querystring.parse('w=%D6%D0%CE%C4&foo=bar', null, null, { decodeURIComponent: gbkDecodeURIComponent })

querystring.stringify(obj[, sep[, eq[, options]]])

추가된 버전: v0.1.25

  • obj <Object> URL 쿼리 문자열로 직렬화할 객체
  • sep <string> 쿼리 문자열에서 키와 값 쌍을 구분하는 데 사용되는 부분 문자열. 기본값: '&'.
  • eq <string> 쿼리 문자열에서 키와 값을 구분하는 데 사용되는 부분 문자열. 기본값: '='.
  • options
    • encodeURIComponent <Function> URL에 안전하지 않은 문자를 쿼리 문자열에서 퍼센트 인코딩으로 변환할 때 사용할 함수. 기본값: querystring.escape().

querystring.stringify() 메서드는 객체의 "고유 속성"을 반복하여 주어진 obj에서 URL 쿼리 문자열을 생성합니다.

다음 유형의 값을 obj에서 전달하여 직렬화합니다: <string> | <number> | <bigint> | <boolean> | <string[]> | <number[]> | <bigint[]> | <boolean[]> 숫자 값은 유한해야 합니다. 다른 입력 값은 빈 문자열로 강제 변환됩니다.

js
querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' })
// 'foo=bar&baz=qux&baz=quux&corge='를 반환합니다.

querystring.stringify({ foo: 'bar', baz: 'qux' }, ';', ':')
// 'foo:bar;baz:qux'를 반환합니다.

기본적으로 쿼리 문자열 내에서 퍼센트 인코딩이 필요한 문자는 UTF-8로 인코딩됩니다. 대체 인코딩이 필요한 경우 대체 encodeURIComponent 옵션을 지정해야 합니다:

js
// gbkEncodeURIComponent 함수가 이미 있다고 가정합니다.

querystring.stringify({ w: '中文', foo: 'bar' }, null, null, { encodeURIComponent: gbkEncodeURIComponent })

querystring.unescape(str)

추가된 버전: v0.1.25

querystring.unescape() 메서드는 주어진 str에 대해 URL 퍼센트 인코딩된 문자를 디코딩합니다.

querystring.unescape() 메서드는 querystring.parse()에서 사용되며 일반적으로 직접 사용할 필요는 없습니다. 이 메서드는 주로 애플리케이션 코드가 필요한 경우 querystring.unescape를 대체 함수에 할당하여 대체 디코딩 구현을 제공할 수 있도록 내보냅니다.

기본적으로 querystring.unescape() 메서드는 JavaScript 내장 decodeURIComponent() 메서드를 사용하여 디코딩을 시도합니다. 실패할 경우 잘못된 URL에서 예외를 발생시키지 않는 더 안전한 동등한 메서드가 사용됩니다.