2009-01-12 4 views
6

en la ruta:En MVC, ¿la información de paginación debe ir en la ruta o cadena de consulta?

Formato:http://mydomain.com/ {categoría}/{subcategoría}/{numPag}/{pageSize}

Ejemplo:http://mydomain.com/books/thriller/3/25

En la cadena de consulta:

Formato:http://mydomain.com/ {category}/{subcategory}? numPag = {numPag} & pageSize = {pageSize}

Ejemplo:http://mydomain.com/books/thriller?pageNumber=3&pageSize=25

me gusta tener todo en el camino, pero mi problema con esto es que si bien es obvio (o al menos algo obvio) qué "libros" y "thriller" están en el primer ejemplo, el "3" y "25" parecen bastante arbitrarios en contraste.

¿Existe un método canónico para determinar qué sucede en MVC, o realmente depende del desarrollador?

Respuesta

17

Prefiero cosas como pagenumbers para estar en las variables de la cadena de consulta. Creo que hay una diferencia en el carácter descriptivo entre

http://mydomain.com/books/thriller?pagesize=50&page=4 

y

http://mydomain.com/books/thriller/50/4 

El punto (a mí) de tener url de limpia es para ellos ser más descriptivo y fácil de leer, y me encuentro con el primer ejemplo de se solo eso.

Un punto interesante hecha por JohnRudolfLewis es:

Una regla de oro que sigo es que si se requiere el argumento, considerar el uso de la vía, si el argumento es opcional, utilice siempre argumentos querystring.

+0

que cubre más o menos mi opinión también. –

+0

+1 De acuerdo, esa es la mejor opción. –

1

¿Existe un método canónico para determinar qué sucede en MVC, o realmente depende del desarrollador?

Depende de usted.

MVC trata de la organización/flujo de su código del lado del servidor y separa la vista de la capa empresarial, no tanto de los parámetros de consulta.

-1

Es más o menos para el desarrollador. Yo diría poner el tamaño de página en la URL.

3

Bueno, es, obviamente, depende de usted. Pero, estás diseñando una interfaz RESTful que se supone que es legible para el ser humano. La cadena de consulta es mucho mejor en ese sentido. De lo contrario, estás viendo dos números que realmente podrían ser cualquier cosa. ¿Y quién recordará la orden?

0

También podría considerar la siguiente

Formato

http://mydomain.com/{category}/{subcategory}/page/{pageNumber}/results/{pageSize} 

Ejemplo

http://mydomain.com/books/thriller/page/3/results/25 
+0

Pero luego, "página" y "resultados" son básicamente valores de ruta desechables. No me gusta el cruft. –

+0

Estoy de acuerdo, pero no veo cómo es diferente a usar una cadena de consulta. Se ve mejor. – bret

+1

Es diferente debido a la semántica. ? page = 4 definitivamente define que la página que se solicita es 4./page/4/no necesariamente lo indica. Esto es especialmente cierto con valores múltiples que no son necesariamente jerárquicos, como "página" y "resultados". "resultados" no es un subconjunto o "página", ni viceversa; IMO, están en el mismo "nivel" de jerarquía, y expresarlos en la ruta, para mí, infiere algún tipo de jerarquía que no existe. –

Cuestiones relacionadas