[http] GET 요청에서 동일한 매개 변수 이름에 대해 여러 값을 전달하는 올바른 방법

GET 요청에서 동일한 매개 변수 이름에 대해 여러 값을 전달하는 올바른 방법이 무엇인지 조사 중입니다.

다음과 같은 URL을 보았습니다.

http://server/action?id=a&id=b

그리고 다음과 같은 URL을 보았습니다.

http://server/action?id=a,b

내 이해는 첫 번째는 정확하지만 이것에 대한 참조를 찾을 수 없다는 것입니다. http 사양을 살펴 보았지만 URL의 ‘쿼리’부분을 구성하는 방법에 대해서는 아무것도 볼 수 없었습니다.

웹 서비스를 구축하는 경우 웹 서비스를 사용하는 사람들이 동일한 이름으로 여러 매개 변수를 전달하는 방법을 알 수 있도록 이러한 방법 중 어느 것이 표준인지 알고 싶습니다.

그렇다면 누군가 어떤 옵션이 올바른지 확인하기 위해 공식 참조 출처를 알려줄 수 있습니까?



답변

실제로 정의 된 표준이 없습니다. 이 정보를 지원하려면 쿼리 문자열 장 에서 위키 백과를 살펴보십시오 . 다음과 같은 의견이 있습니다.

명확한 표준은 없지만 대부분의 웹 프레임 워크에서는 여러 값을 단일 필드와 연결할 수 있습니다. [3] [4]

또한 3.4 쿼리 섹션에서 RFC 3986을 살펴보면 여러 값을 가진 매개 변수에 대한 정의가 없습니다.

대부분의 응용 프로그램은 표시 한 첫 번째 옵션을 사용합니다 http://server/action?id=a&id=b. 이 정보를 지원하려면이 Stackoverflow 링크 및 ASP.NET 응용 프로그램과 관련된 이 MSDN 링크 를 살펴보십시오.이 값은 여러 값을 가진 매개 변수에 동일한 표준을 사용합니다.

그러나 API를 개발 중이므로 API 호출자가 쿼리 문자열을 만드는 데 많은 문제가 없으므로 가장 쉬운 방법을 수행하는 것이 좋습니다.


답변

브라우저가 기본적으로 양식을 처리하는 방법을 살펴 보는 것이 좋습니다. 예를 들어 양식 요소 <select multiple>와 w3schools의이 예제에서 여러 값을 처리하는 방법을 살펴보십시오 .

<form action="/action_page.php">
<select name="cars" multiple>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>
<input type="submit">
</form>

PHP의 경우 :

<select name="cars[]" multiple>

w3schools.com에서 위의 라이브 예

위에서 “saab, opel”을 클릭하고 제출을 클릭하면 cars = saab & cars = opel 의 결과가 생성됩니다 . 그런 다음 백엔드 서버에 따라 매개 변수 cars 가 추가 처리 할 수있는 배열로 제공되어야합니다.

이것이이 문제를 처리하는보다 ‘표준적인’방법을 찾는 사람에게 도움이되기를 바랍니다.


답변