In MVC, le informazioni di impaginazione dovrebbero andare nel percorso o nella stringa di query?
-
22-07-2019 - |
Domanda
Nel percorso:
Formato: http://mydomain.com/ {category} / { sottocategoria} / {pageNumber} / {pageSize}
Esempio: http://mydomain.com/books/ Thriller / 3/25
Nella stringa di query:
Formato: http://mydomain.com/ {category} / { sottocategoria}? pageNumber = {} pageNumber & amp; pageSize = {} pageSize
Esempio: http://mydomain.com/ libri / Thriller pageNumber = 3 & amp;? pageSize = 25
Mi piace avere tutto sulla strada, ma il mio problema è che mentre è ovvio (o almeno in qualche modo ovvio) cosa " libri " e "thriller" sono nel primo esempio, il "3" e "25" al contrario sembrano piuttosto arbitrari.
Esiste un metodo canonico per determinare cosa succede in MVC o dipende davvero dallo sviluppatore?
Soluzione
Preferisco cose come i pagenumbers nelle variabili di querystring. Penso che ci sia una differenza nella descrizione tra
http://mydomain.com/books/thriller?pagesize=50&page=4
e
http://mydomain.com/books/thriller/50/4
Il punto (per me) di avere URL puliti è che siano più descrittivi e leggibili, e trovo che il primo esempio sia proprio quello.
Un punto interessante sollevato da JohnRudolfLewis è:
Una regola empirica che seguo è che se l'argomento è richiesto, considerare l'utilizzo del percorso, se il l'argomento è facoltativo, usa sempre argomenti di querystring.
Altri suggerimenti
Una regola empirica che seguo è che se è richiesto l'argomento, considera l'utilizzo del percorso, se l'argomento è facoltativo, usa sempre argomenti querystring.
Nel complesso, mi atterrei a tutto ciò che rende l'URL più leggibile.
Questo sito lo inserisce nella stringa di query: https://stackoverflow.com/questions?page=2&pagesize=30
Beh, ovviamente dipende da te. Ma stai progettando un'interfaccia RESTful che dovrebbe essere leggibile dall'uomo. La querystring è molto meglio in questo senso. Altrimenti stai guardando due numeri che potrebbero davvero essere qualsiasi cosa. E chi ricorderà l'ordine?
Esiste un metodo canonico per determinare cosa succede in MVC o dipende davvero dallo sviluppatore?
Dipende da te.
MVC riguarda l'organizzazione / flusso del codice lato server e separa la vista dal livello aziendale, non tanto sui parametri di query.
Potresti anche considerare quanto segue
Formato
http://mydomain.com/{category}/{subcategory}/page/{pageNumber}/results/{pageSize}
Esempio
http://mydomain.com/books/thriller/page/3/results/25
Dipende praticamente dallo sviluppatore. Direi di inserire pageSize nell'URL.