Правильный способ передачи нескольких значений для одного и того же имени параметра в запросе GET

Я ищу правильный способ передачи нескольких значений для одного и того же имени параметра в запросе GET.

Я видел такие URL-адреса:

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

и я видел такие URL-адреса:

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

Я понимаю, что первый правильный, но я не могу найти никакой ссылки для этого. Я взглянул на спецификацию http, но ничего не увидел о том, как должна быть составлена часть "запроса" URL-адреса.

Я не хочу ответа, что говорит "либо хорошо" - если я создаю веб-сервис, я хочу знать, какой из этих методов является стандартным, чтобы люди, использующие мой веб-сервис, знали, как передать несколько параметров для одного и того же имени.

Так, может кто-нибудь указать мне на официальный источник, чтобы подтвердить, какой вариант правильный?

1 ответов


действительно, нет определенного стандарта. Чтобы поддержать эту информацию, взгляните на Википедию, в Строку Запроса глава. Существует следующий комментарий:

пока нет окончательного стандарта, большинство веб-фреймворков позволяют несколько значений, связанных с одним полем.[3][4]

кроме того, когда вы взглянем на!--14-->RFC 3986, в секции 3.4 Запрос, нет определения для параметров с несколькими значениями.

большинство приложений используют первую показанную вами опцию:http://server/action?id=a&id=b. Чтобы поддержать эту информацию, взгляните на это ссылка Stackoverflow, а это MSDN link относительно ASP.NET приложения, которые используют один и тот же стандарт для параметров с несколькими значениями.

однако, поскольку вы разрабатываете API, я предлагаю вам сделать то, что для вас проще всего, так как у вызывающего API не будет особых проблем с созданием строки запроса.