Eu estou olhando para o que é a maneira correta de passar vários valores para o mesmo nome de parâmetro em uma solicitação GET.
Eu já vi URLs como este:
http://server/action?id=a&id=b
E vi URLs como este:
http://server/action?id=a,b
Meu entendimento é que o primeiro está correto, mas não consigo encontrar nenhuma referência para isso. Dei uma olhada nas especificações http, mas não consegui ver nada sobre como a parte 'query' de um URL deve ser composta.
Não quero uma resposta que diga "qualquer um está bom" - se estou construindo um serviço da web, quero saber qual desses métodos é padrão para que as pessoas que usam o serviço da web saibam como passar vários parâmetros para o mesmo nome.
Então, alguém pode me indicar uma fonte de referência oficial para confirmar qual opção está correta?
id=a&id=b
como booleano AND eid=a,b
booleano OR.?id=5&id=3
. O PHP leria apenas um valor para id aqui. Se bem me lembro, teria que ser assim para funcionar com 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
assume que o coma,
é um delimitador válido. Mas seus valores de parâmetro podem conter a,
. Em seguida, o cliente precisa escapar,
nos valores dos parâmetros de consulta. Mas você pode decidir que;
é melhor. Isso significa que o cliente e o servidor devem compartilhar o delimitador oficial da sua API.id=a&id=b
não tem esse problema, embora ele faz urls maisEu sugeriria ver como os navegadores lidam com formulários por padrão. Por exemplo, dê uma olhada no elemento de formulário
<select multiple>
e como ele lida com vários valores desse exemplo em w3schools.Para uso em PHP:
Exemplo ao vivo de cima em w3schools.com
De cima, se você clicar em "saab, opel" e clicar em enviar, o resultado será cars = saab & cars = opel . Então, dependendo do servidor back-end, o parâmetro cars devem aparecer como uma matriz que você pode processar posteriormente.
Espero que isso ajude quem procura uma maneira mais 'padrão' de lidar com esse problema.
fonte