unizar-30226-2019-07 / API

RESTful API for Selit
MIT License
1 stars 0 forks source link

Número de visitas de un producto: discusión #26

Open diegoroyo opened 5 years ago

diegoroyo commented 5 years ago

Abro este issue para discusión sobre la implementación del número de visitas (en concreto, cómo incrementar el número de visitas para un producto)

Posibles implementaciones

Habíamos pensado dos formas:

  1. Incrementar al pedir la información de un producto: Al realizar la petición GET /products/{product_id}, incrementar el contador.

    El problema es que, al menos en la aplicación móvil, no se realizan este tipo de peticiones. La información de los productos se obtiene a partir de un listado, GET /products por ejemplo. De esta forma, la información del producto se obtiene 2 veces.

    Para aligerar, esta segunda petición puede ser HEAD /products/{products_id}, de forma que solo se comprueba si existe products_id y no se devuelve nada en el cuerpo.

  2. Operación separada: Cuando el usuario visualiza un producto, se envía una petición a /products/{product_id}/add-views, por ejemplo.

Cualquier opinión o mejora de las opciones actuales es bienvenida

torvic98 commented 5 years ago

Por lo que entiendo en este párrafo:

El problema es que, al menos en la aplicación móvil, no se realizan este tipo de peticiones. La información de los productos se obtiene a partir de un listado, GET /products por ejemplo. De esta forma, la información del producto se obtiene 2 veces.

El grupo de móvil usáis la información que ya habíais mostrado en el listado de los productos, en lugar de volver a realizar la petición GET. No sé si realmente eso ahorra tiempo de procesamiento de las peticiones o no. ¿Habéis probado ambas alternativas?

Desconozco cómo funciona el refresco de productos (F5) en vuestra aplicación de móvil, pero supongo que (aunque sea de cara a las subastas) tendréis alguna forma de refrescar la información de producto sin pasar de nuevo por el listado de productos, ¿me equivoco?.

Personalmente, veo más adecuada la opción 1.

1 . Incrementar al pedir la información de un producto: Al realizar la petición GET /products/{product_id}, incrementar el contador.

victorpowah commented 5 years ago

Yo tambien veo mas adecuada la opcion 1.

diegoroyo commented 5 years ago

Actualmente en la aplicación móvil, si no me equivoco, la información de los productos solamente se obtiene del listado de productos y no se realiza ninguna petición a /products/{product_id}.

Es cierto que habrá que añadir nueva funcionalidad para actualizar la información de un producto, en especial para las subastas. Para los "productos" (no subastas) no vi ninguna razón para actualizar su información, así que no se hace.

Entonces, si un usuario está viendo una subasta y actualiza su información 3 veces, ¿cuenta como 3 visitas? Me parece bien tanto si cuenta como 3 visitas separadas como si cuenta como 1 visita, pero creo que es un aspecto importante.

victorpowah commented 5 years ago

Yo creo que una visita por actualizacion.

torvic98 commented 5 years ago

Yo creo que una visita por actualizacion.

Tal como dice @victorpowah, lo mejor sería que cada vez que reciban una petición de GET /products/{product_id} incrementen en uno (+1) el número de visitas. Nos da igual que el contador crezca muy rápido, y es la forma más sencilla.

Si estamos todos de acuerdo podéis implementar también el endpoint HEAD /products/{product_id} que incremente el contador de visitas sin devolver la información. Aunque esto sólo lo utilizará la aplicación de móvil. Nota: el manejo de errores (404, 500...) de HEAD ha de ser el mismo que el de GET.