Estoy investigando cuál es la forma correcta de pasar múltiples valores para el mismo nombre de parámetro en una solicitud GET.
He visto URL como esta:
http://server/action?id=a&id=b
Y he visto URL como esta:
http://server/action?id=a,b
Entiendo que lo primero es correcto, 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 se debe componer la parte 'consulta' de una URL.
No quiero una respuesta que diga "tampoco está bien". Si estoy creando 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 múltiples parámetros para el mismo nombre.
Entonces, ¿alguien puede señalarme una fuente de referencia oficial para confirmar qué opción es la correcta?
id=a&id=b
como booleano AND, yid=a,b
como booleano OR.?id=5&id=3
. PHP solo leería en un valor para id aquí. Si no recuerdo mal, tendría que tener este aspecto para que funcione con PHP:?id[]=5&id[]=3
since you are developing the APIs, I suggest you to do what is the easiest for you, since the caller of the API will not have much trouble creating the query string.
id=a,b
supone que el coma,
es un delimitador válido. Pero los valores de sus parámetros pueden contener a,
. Entonces el cliente necesita escapar,
en los valores de los parámetros de consulta. Pero podrías decidir que;
es mejor. Significa que el cliente y el servidor deben compartir el delimitador oficial para su API.id=a&id=b
no tiene este problema a pesar de que alarga las URLSugeriría mirar cómo los navegadores manejan los formularios de forma predeterminada. Por ejemplo, eche un vistazo al elemento de formulario
<select multiple>
y cómo maneja los valores múltiples de este ejemplo en w3schools.Para uso de PHP:
Ejemplo en vivo desde arriba en w3schools.com
Desde arriba, si hace clic en "saab, opel" y hace clic en enviar, generará un resultado de cars = saab & cars = opel . Luego, dependiendo del servidor de servicios de fondo, los vagones de parámetros deben aparecer como una matriz que puede procesar aún más.
Espero que esto ayude a cualquiera que busque una forma más "estándar" de manejar este problema.
fuente