2010-10-05 5 views
11

Ho un URL lungo con diversi valori.Separatori URL validi

Esempio 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 

La mia area di ricerca variabile contiene solo 4 cifre del numero (esempio 4000, 5000), ma possono contenere un sacco di loro. In questo momento li ho separati nell'URL usando ; come simbolo separatore. Sebbene come visto nell'esempio 1, il; viene convertito in %3B. Questo mi fa credere che questo sia un cattivo simbolo da usare.

Qual è il miglior separatore di URL?

+0

Cordiali saluti, questo è un buon strumento di codifica/decodifica URL per i test: http://meyerweb.com/eric/tools/dencoder/ –

risposta

2

Ebbene, secondo RFC1738, URL validi possono contenere soltanto le lettere un - z, il segno più (+), d'epoca e trattino (-).

In genere vorrei aggiungere un vantaggio per separare le aree di ricerca. Così il vostro URL diventerebbe http://www.domain.com/list?seach_type=0&search_period=1&search_min=3000&search_max=21000&search_area=6855+7470+7700+ ...

--EDIT--

Come GinoA sottolineato ho letto male il documento. Quindi "$-_.+!*'()," sono anche caratteri validi. Comunque andrei comunque con il segno +.

+0

-1. Questo non è corretto, come fa notare GinoA. – You

+0

Hai ragione (o GinoA è). Ho modificato la risposta. –

3

Se ci sono solo numeri da separare, è disponibile un'ampia scelta di separatori. Puoi scegliere qualsiasi lettera per esempio.

Probabilmente uno spazio può essere una buona scelta. Verrà trasformato nel carattere + nell'URL, quindi sarà più leggibile di una lettera.

Esempio: search_area=4000+5000+6000

27

Moontear, penso che abbiate frainteso lo linked document. Questa limitazione si applica solo alla parte "schema" dell'URL. Nel caso di URL WWW, questo è il "http".

La sezione successiva del documento continua a dire:

Così, solo caratteri alfanumerici, i caratteri speciali "! $ -_ + * '()," e caratteri riservati utilizzati per la loro gli scopi riservati possono essere utilizzati non codificati all'interno di un URL.

Personalmente utilizzerei la virgola (,). Tuttavia, più (+) e trattino (-) sono entrambe opzioni ragionevoli.

BTW, questo documento indica anche che il punto e virgola (;) è riservato in alcuni schemi.

+0

-1. Questo dovrebbe essere un commento - SO non è un forum! – You

+2

@You: non sono d'accordo con il downvote. Non è solo un commento, ma anche una risposta valida, più esplicita della mia. Soprattutto gli ultimi due paragrafi. –

+0

@MainMa: Abbastanza vero. Riformulerei se fossi GinoA; come è ora, è una risposta - e quelli appartengono ai commenti. – You

1

"+" deve essere interpretato come uno spazio "" quando il tipo di contenuto è application/x-www-form-urlencoded (standard per i moduli HTML). Questo può essere gestito dal tuo software server.

Preferisco "!". Non riceve la codifica URL (almeno non in Chrome) e riserva "+" per l'utilizzo come carattere di spazio reale nel caso tipico.

0

Sono in ritardo per la festa, ma una stringa di query valida può ripetere variabili così invece di ...

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

... si potrebbe anche usare ...

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