2010-10-05 44 views
11

Tengo una URL larga con varios valores.Separadores de URL válidos

Ejemplo 1:

http://www.domain.com/list?seach_type[]=0&search_period[]=1&search_min=3000&search_max=21000&search_area=6855%3B7470%3B7700%3B7730%3B7741%3B7742%3B7752%3B7755%3B7760%3B7770%3B7800%3B7840%3B7850%3B7860%3B7870%3B7884%3B7900%3B7950%3B7960%3B7970%3B7980%3B7990%3B8620%3B8643%3B8800%3B8830%3B8831%3B8832%3B8840%3B8850%3B8860%3B8881%3B9620%3B9631%3B9632 

Mi área de búsqueda variable contiene sólo 4 dígitos de los números (ejemplo 4000, 5000), pero puede contener una gran cantidad de ellos. En este momento separe estos en la URL usando ; como símbolo de separación. Aunque como se ve en el Ejemplo 1, el; se convierte en %3B. Esto me hace creer que este es un mal símbolo para usar.

¿Cuál es el mejor separador de URL?

+0

FYI, esta es una buena URL herramienta de codificación/decodificación para la prueba: http://meyerweb.com/eric/tools/dencoder/ –

Respuesta

2

Bueno, según RFC1738, URLs válidos sólo puede contener las letras un - z, el signo más (+), el período y guión (-).

En general, me gustaría ir con un punto a favor para separar las áreas de búsqueda. Por lo que su URL se convertiría en http://www.domain.com/list?seach_type=0&search_period=1&search_min=3000&search_max=21000&search_area=6855+7470+7700+ ...

--EDIT--

Como GinoA señaló leí mal el documento. Por lo tanto, "$-_.+!*'()," también son caracteres válidos. Aun así, seguiría con el signo +.

+0

-1. Esto es incorrecto, como señala GinoA. – You

+0

Tienes razón (o GinoA es). Edité la respuesta. –

3

Si solo hay números para separar, tiene una gran selección de separadores. Puede elegir cualquier letra, por ejemplo.

Probablemente un espacio puede ser una buena opción. Se transformará en el carácter + en la URL, por lo que será más legible que una letra.

Ejemplo: search_area=4000+5000+6000

27

Moontear, creo que ha leído mal el linked document. Esa limitación solo se aplica a la porción de "esquema" de la URL. En el caso de las URLs WWW, ese es el "http".

La siguiente sección del documento continúa diciendo:

Por lo tanto, ser alfanuméricos, los caracteres especiales "! $ -_ + * '()", y utilizan caracteres reservados para su los propósitos reservados se pueden usar sin codificar dentro de una URL.

Yo personalmente usaría coma (,). Sin embargo, más (+) y el guión (-) también son opciones razonables.

Por cierto, ese documento también menciona que el punto y coma (;) está reservado en algunos esquemas.

+0

-1. Esto debería ser un comentario - ¡SO no es un foro! – You

+2

@You: No estoy de acuerdo con la votación negativa. No es solo un comentario, sino también una respuesta válida, más explícita que la mía. Especialmente los dos últimos párrafos. –

+0

@MainMa: Algo cierto. Lo volvería a formular si fuera GinoA; como está ahora, es una respuesta, y esos pertenecen en los comentarios. – You

1

"+" se debe interpretar como un espacio "" cuando el tipo de contenido es application/x-www-form-urlencoded (estándar para formularios HTML). Esto puede ser manejado por su software de servidor.

Prefiero "!". No tiene codificación URL (al menos no en Chrome) y reserva "+" para usar como un carácter de espacio real en el caso típico.

0

Llego muy tarde a la fiesta, pero una cadena de consulta válida puede repetir las variables en lugar de ...

http://x.y.z/list?type=0&period=1&min=3000&max=21000&area=6855+7470+7700 

... también se puede utilizar ...

http://x.y.z/list?type=0&period=1&min=3000&max=21000&area=6855&area=7470&area=7700 
Cuestiones relacionadas