2009-02-23 13 views
11

Possiedo un'applicazione Web RESTful che supporta più campi di ordinamento su una raccolta di elementi. Esiste una convenzione comune per codificare questi campi di ordinamento nella stringa di query di un URL? Sto considerando un modello come il seguente:Convenzione di stringhe di query URL per più ordinamenti

http://myapp.com/books?sort=author:asc,datepublished:desc&count=12 

Questo ordina la raccolta di libri per autore e quindi per data di pubblicazione.

Fondamentalmente, ho bisogno di un modo conveniente per le coppie nome-valore nella mia stringa di query per avere coppie di valori nome proprie. Dovrò fare qualcosa di simile all'esempio precedente anche per i parametri del filtro.

Rails o ASP.NET MVC hanno uno schema per questo? Ci sono altri quadri che hanno stabilito i modi per affrontare questo problema? Preferirei usare un formato familiare piuttosto che il mio.

Preferirei anche un formato che utilizzi il minor numero possibile di codifica dell'URL dell'URL.

+0

Buona domanda: mi sono chiesto anch'io la stessa cosa. –

+0

Sembra che tu stia realizzando un formato JSON-ish; che eviterei perché qualcuno potrebbe interpretarlo -come- JSON, nel qual caso la nozione di ordinamento è persa. –

+0

Buon punto, Tom. Ecco perché sto chiedendo un feedback! – dthrasher

risposta

9

Ho fatto questo prima di utilizzare la sintassi di ordinamento SQL standard. Ci sono numerose funzioni e tecniche di analisi là fuori.

http://myapp.com/books?sort=author asc,datepublished desc&count=12 

che verrebbe codificato a

http://myapp.com/books?sort=author+asc,datepublished+desc&count=12 
+1

Questo è un buon modo per andare in quanto è anche compatibile con Solr, un motore di ricerca open source ampiamente utilizzato. – KenE

+0

+1, l'elenco delle virgole Plus è probabilmente migliore della lista Comma Comma. –

+0

Semplice. Mi piace. Abbiamo un vincitore! – dthrasher

0

Eviterei di utilizzare parametri simili GET. Che dire di questo:

http://myapp.com/books/sortedby/author:asc+datepublished:desc/count/12 

L'idea è che se avete bisogno di affinare la ricerca di una risorsa basata su un criterio, si aggiunge il nome di essa sull'URL, seguito dal valore del parametro. Se hai bisogno di più di un parametro, separali con un +.

Questo è ciò che StackOverflow utilizza per le domande con la targhetta:

http://stackoverflow.com/questions/tagged/java+servlet 

Ammetto però che l'aggiunta del conteggio/12 alla fine sembra un po 'strano, ma non riesco a pensare a qualcosa di meglio.

+2

Qual è il motivo per cui è necessario eliminare i parametri di querystring? Mettendo il conteggio, il filtro, l'ordinamento, ecc. Nell'URL stesso mi darebbe un numero enorme di URL da trattare, e costringerebbe le persone a ricordare se sortby viene prima del conteggio o viceversa. – dthrasher

0

Che dire di una versione completamente compatibile PHP come questo:

http://myapp.com/books?sort[0][name]=author&sort[0][dir]=asc&sort[1][name]=datepublished&sort[1][dir]=desc&count=12 

Un po 'più lungo, ma molto comoda e come ho già detto, compatibile con PHP. ASP.NET potrebbe aver implementato anche il supporto per questo formato.

Ciò creerà un array, ordina, direttamente dove ogni elemento di specie ha un nome e dir struttura.

6

per il riposo, preferisco una sintassi più intuitiva:

http://myapp.com/books?sort=+author,-datepublished&count=12

E più elaborata (senza segno '+'):

http://myapp.com/books?sort=author,-datepublished&count=12

facile da ricordare ...

+0

cosa significa + e - sta? intendo ciò che è asc e ciò che descrivo. –

Problemi correlati