Forma correcta de pasar varios valores para el mismo nombre de parámetro en la solicitud GET


Estoy investigando cuál es la forma correcta de pasar varios valores para el mismo nombre de parámetro en una solicitud GET.

He visto URLs como esta:

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

Y he visto URLs como esta:

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

Mi entendimiento es que la primera es correcta, pero no puedo encontrar ninguna referencia para esto. Eché un vistazo a la especificación http, pero no pude ver nada acerca de cómo la parte 'consulta' de una URL debe ser hecha.

No quiero una respuesta que diga "cualquiera está bien" - si estoy construyendo un servicio web, quiero saber cuál de estos métodos es estándar para que las personas que usan mi servicio web sepan cómo pasar varios parámetros para el mismo nombre.

Entonces, ¿puede alguien señalarme una fuente de referencia oficial para confirmar qué opción es correcta?

 116
Author: stripybadger, 2014-06-05

1 answers

De hecho, no hay un estándar definido. Para soportar esa información, echa un vistazo a wikipedia, en el capítulo Query String. Hay el siguiente comentario:

Si bien no hay un estándar definitivo, la mayoría de los marcos web permiten múltiples valores que se asociarán a un solo campo.[3][4]

Además, cuando echa un vistazo a la RFC 3986 , en la sección 3.4 Consulta , no hay definición para los parámetros con múltiples valores.

La mayoría de las aplicaciones utilizan la primera opción que ha mostrado: http://server/action?id=a&id=b. Para apoyar esa información, eche un vistazo a este enlace Stackoverflow , y este enlace MSDN con respecto a ASP.NET aplicaciones, que utilizan el mismo estándar para parámetros con múltiples valores.

Sin embargo, ya que está desarrollando las API, le sugiero que haga lo que sea más fácil para usted, ya que el llamante de la API no tendrá muchos problemas para crear la cadena de consulta.

 103
Author: EduardoFernandes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:20