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-data
POST 메소드를 사용할 때 데이터 스트림에 묻힐 수 있으므로 URL에 나타나지 않을 수 있습니다. 예, POST
요청은 매개 변수를 양식 데이터 및 URL 로 정의 할 수 있으며 매개 변수가 여러 값을 가질 수 있으므로 일관성이 없습니다.
지금까지이 동작에 대한 설명을 찾지 못했습니다. POST
요청 에서 매개 변수를 “숨기기 해제”하는 것이 유용 할 수 있으며 요청을 처리하는 GET
코드가 POST
. 물론 이것은 URL의 매개 변수를 지원하는 서버 코드에서만 작동 할 수 있습니다.
더 나은 통찰력을 얻을 때까지 요청의 form-data
데이터 스트림 에서만 매개 변수를 사용하는 것이 좋습니다 POST
.
출처 :