Pregunta

Una de las muchas cosas que me han faltado servicio de raspador que configuré la semana pasada son URL bonitas.En este momento el parámetro de usuario se está pasando al script con ?tu=, que es un síntoma de un truco perezoso (que ciertamente lo es el script).Sin embargo, he estado pensando en rehacerlo y me gustaría recibir comentarios sobre las opciones disponibles.En este momento hay dos páginas, actualización y gráfico, que brindan información al usuario.Aquí están las dos posibilidades que se me ocurrieron."1234" es el número de identificación del usuario.Lamentablemente, por motivos técnicos, no se puede utilizar el nombre de usuario:

  • http://<tld>/actualización/1234
  • http://<tld>/chart/1234

o

  • http://<tld>/1234/actualización
  • http://< tld >/1234/gráfico

La opción número 1, conceptualmente, es llamar a la actualización con el ID de usuario.La opción n.° 2 es proporcionar un verbo para operar con una identificación de usuario.

Desde el punto de vista de la coherencia, ¿qué tiene más sentido?


Otra opción mencionada es

  • http://<tld>/usuario/1234/actualización
  • http://<tld>/usuario/1234/chart

Esto proporciona espacio para páginas que no están relacionadas con un usuario específico.es decir.

  • http://< tld >/estadísticas
¿Fue útil?

Solución

Me inclinaría suavemente por comenzar con el ID de usuario, opción n.° 2, ya que (lo que existe) de la estructura del directorio son dos funciones diferentes sobre los datos de un usuario.Es el gráfico del usuario y la actualización del usuario.

Sin embargo, es un punto bastante menor, sin saber si hay planes para una expansión significativa de la funcionalidad de esta cosa.

  • ¿Todo lo que sigue serán funciones adicionales foo, bar y baz para usuarios individuales?Si es así, la opción n.° 2 se vuelve más atractiva por la razón anterior: el ID de usuario es el dato central, tiene sentido comenzar con él semánticamente.
  • ¿Va a agregar funciones no controladas por el usuario?Entonces, comenzar con un directorio de encabezado podría tener sentido: /user/1234/update, /user/1234/chart, /question/45678/activity, /question/45678/stats, etc.

Otros consejos

Si sigue este esquema, será sencillo evitar que los robots (que se portan bien) visiten su sitio:

 http://< tld >/update/1234
 http://< tld >/chart/1234

Esto se debe a que puede configurar un archivo /robots.txt para que contenga:

 Disallow /update/
 Disallow /chart/

Para mí es una buena ventaja que a menudo se pasa por alto.

La opción n.° 1 coincide con los ejemplos comunes de ASP.NET MVC.Algunos de los ejemplos en Controlador de vista de modelo El modelo tiene la forma {controlador}/{acción}/{id}.El Inicio rápido de .NET 3.5 sobre enrutamiento tiene una tabla que muestra algunos patrones de ruta válidos:

Definición de ruta - Ejemplo de URL coincidente

{Controller}/{Action}/{id} -/Products/Show/Beverages

{tabla} /details.aspx - /products/details.aspx

Blog/{Action}/{Entry} -/Blog/Show/123

{reportType}/{año}/{mes}/{día} -/ventas/2008/1/5

{localidad}/{acción}
-- /es-US/mostrar

{idioma}-{país}/{acción}
-- /es-US/mostrar

Personalmente, me gusta este estilo porque mantiene al usuario igual, pero le brinda una visión específica de él.

  • http://<tld>/1234/actualización
  • http://< tld >/1234/gráfico

Si fuera por el otro lado, esperaría poder ver todo en /update o /chart y luego limitarlo por usuario.

Vaya con este último;Las URL deben ser jerárquicas (o, al menos, los usuarios las leen de esa manera por analogía con las rutas de los directorios locales).La atención se centra aquí en diferentes puntos de vista de un usuario específico, por lo que "usuario" es el concepto más general y debería aparecer primero.

acabo de responder a la pregunta "¿Cómo estructura sus rutas URL?" con mis opiniones sobre cómo hacer que las URL sean RESTful, pirateables y fáciles de usar.Creo que sería mejor vincular que escribir algo similar en esta pregunta, de ahí el enlace.

Estoy de acuerdo desde el punto de vista del contexto, la aplicación seguida de los parámetros tiene mucho más sentido para mí que la clave sustituta para un elemento seguida del contexto de lo que es el elemento.En última instancia, sugeriría lo que le resulte más natural programar.

La convención dice objeto/verbo/ID, por lo que debería ser:

http://<tld>/usuario/update/1234

(Me acabo de dar cuenta de que coincide con su pregunta actualizada :)

Entonces sí, la número 3 es la mejor opción.

Esto admite operaciones que no son de usuario como usted menciona (stats/), así como operaciones multiusuario:

http://<tld>/usuario/lista/

Si hay una forma de enumerar a los usuarios, introduciría un segmento de usuarios:

http://< tld >/users/ <--- user list
http://< tld >/users/1234/ <--- user profile, use overloaded POST on this to update.
http://< tld >/users/1234/chart/ <--- user chart

Si solo puede ver sus propios detalles, es decir, los usuarios son invisibles entre sí, no necesita la identificación del usuario ya que puede inferirla de la sesión, en cuyo caso:

http://< tld >/user/ <--- user profile, use overloaded POST on this to update.
http://< tld >/user/chart/ <--- user chart
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top