[url] URL 매개 변수와 쿼리 문자열의 차이점은 무엇입니까?

URL에서 매개 변수와 쿼리 문자열 사이에 많은 차이가 보이지 않습니다. 그렇다면 차이점은 무엇이며 언제 다른 하나를 사용해야할까요?



답변

질의 구성 요소는 첫 번째로 표시되는 ?URI에있다. “쿼리 문자열”은 동의어 일 수 있습니다 (이 용어는 URI 표준에서 사용되지 않음).

쿼리 구성 요소가있는 HTTP URI의 몇 가지 예 :

http://example.com/foo?bar
http://example.com/foo/foo/foo?bar/bar/bar
http://example.com/?bar
http://example.com/?@bar._=???/1:
http://example.com/?bar1=a&bar2=b

( 쿼리 구성 요소에서 허용되는 문자 목록 )

쿼리 구성 요소의 “형식”은 URI 작성자에게 달려 있습니다. 일반적인 규칙 ( 단, URI 표준에 관한 한 규칙에 지나지 않음 ¹)은 키-값 쌍 (일명)에 쿼리 구성 요소를 사용하는 것입니다. 위의 마지막 예와 같은 매개 변수 : bar1=a&bar2=b.

이러한 매개 변수는 다른 URI 구성 요소, 즉 경로 ² 및 단편에도 나타날 수 있습니다. URI 표준에 관한 한 어떤 구성 요소와 어떤 형식을 사용할지는 귀하에게 달려 있습니다.

경로, 쿼리 및 단편에 매개 변수가있는 예제 URI :

http://example.com/foo;key1=value1?key2=value2#key3=value3

¹ URI 표준은 쿼리 구성 요소에 대해 다음과 같이 말합니다 .

[…] 쿼리 구성 요소는 “키 = 값”쌍의 형태로 식별 정보를 전달하는 데 자주 사용됩니다. […]

² URI 표준은 경로 구성 요소에 대해 말합니다 .

[…] 세미콜론 ( “;”) 및 같음 ( “=”) 예약 문자는 종종 해당 세그먼트에 적용 할 수있는 매개 변수 및 매개 변수 값을 구분하는 데 사용됩니다. 쉼표 ( “,”) 예약 문자는 종종 유사한 목적으로 사용됩니다.


답변

매개 변수는 URL 경로 내에 나타날 수있는 키-값 쌍이며 세미콜론 문자 ( ;)로 시작 합니다.

쿼리 문자열은 경로 (있는 경우) 뒤에 나타나며 물음표 문자 ( ?)로 시작합니다.

매개 변수와 쿼리 문자열 모두 키-값 쌍을 포함합니다.

A의 GET요청 매개 변수는 URL 자체에 나타납니다 :

<scheme>://<username>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment>

A의 POST요청 매개 변수뿐만 아니라 (같은 내용으로 함) 데이터 스트림에서, URL 자체에 나타날 수 있습니다.

쿼리 문자열은 항상 URL의 일부입니다.

매개 변수는 form-dataPOST 메소드를 사용할 때 데이터 스트림에 묻힐 수 있으므로 URL에 나타나지 않을 수 있습니다. 예, POST요청은 매개 변수를 양식 데이터 URL 로 정의 할 수 있으며 매개 변수가 여러 값을 가질 수 있으므로 일관성이 없습니다.

지금까지이 동작에 대한 설명을 찾지 못했습니다. POST요청 에서 매개 변수를 “숨기기 해제”하는 것이 유용 할 수 있으며 요청을 처리하는 GET코드가 POST. 물론 이것은 URL의 매개 변수를 지원하는 서버 코드에서만 작동 할 수 있습니다.

더 나은 통찰력을 얻을 때까지 요청의 form-data데이터 스트림 에서만 매개 변수를 사용하는 것이 좋습니다 POST.

출처 :

모든 개발자가 URL에 대해 알아야 할 사항

RFC 3986


답변