Open diegoroyo opened 5 years ago
Si back-end (@victorpowah) está de acuerdo, la opción que aparenta ser más fácil para front-end es la primera:
Juntar toda la funcionalidad en la misma petición: Los productos devueltos por las operaciones
GET /products
,GET /products/{product_id}
, etc. tienen un atributo in_wishlist que indique (true/false) si ese producto está o no en la lista del usuario que ha realizado la petición
En cuanto al segundo tema:
Asumo que solamente el usuario que está logueado puede ver/añadir/quitar su lista de productos deseados.
Sí, yo creo que la lista de deseos es privada de cada usuario.
Si bien nos encontramos de nuevo con el asunto del me
. Personalmente sigo sin comprender cómo no podéis tener almacenado el user_id
para usarlo en todo este tipo de peticiones. Estamos en tiempo de descuento, así que me da bastante igual los atajos que toméis en la API (como este) para facilitaros la vida. Si @victorpowah está de acuerdo, podéis crear /users/me
como referencia al usuario logueado en cualquier circunstancia.
Notificadme por aquí cualquier decisión final.
El segundo tema se cumple y estoy de acuerdo con los punto 1 y 3. ¿Para el punto uno seria necesario las dos funciones? Y por ultimo, ¿como contabilizamos que se ha visitado un producto? @torvic98 @diegoroyo
Respecto al me
:
Si bien nos encontramos de nuevo con el asunto del me. Personalmente sigo sin comprender cómo no podéis tener almacenado el user_id para usarlo en todo este tipo de peticiones.
Está almacenado y se puede leer sin ningún problema, pero lo decía por evitar hacer pasos extra, que los veo innecesarios, a la hora de hacer operaciones con la lista de deseados ya que solamente tiene sentido hacerlas con el propio usuario. Si usar /me/wishes_products
no es una buena práctica (no sé si lo es o no) podemos olvidarnos de hacerlo.
Y sobre los otros temas:
¿Para el punto uno seria necesario las dos funciones?
Si lo juntamos todo en la misma petición (devolver un atributo in_wishlist
con el producto) no hace falta incluir la parte de /users/{user_id}/wishes_products/{product_id}
, al menos con la funcionalidad que teníamos pensada en este momento para la aplicación. Pero mejor esperar a opiniones de más gente.
¿como contabilizamos que se ha visitado un producto?
Echale un vistazo a la issue #26
Si lo juntamos todo en la misma petición (devolver un atributo
in_wishlist
con el producto) no hace falta incluir la parte de/users/{user_id}/wishes_products/{product_id}
, al menos con la funcionalidad que teníamos pensada en este momento para la aplicación. Pero mejor esperar a opiniones de más gente.
El manejo de la lista de deseos (añadir/borrar productos) debería realizarse desde el endpoint específico que ya comentamos: PUT
or DEL
sobre el path /users/{user_id}/wishes_products/{product_id}
o sobre el path /users/{user_id}/wishes_auctions/{auction_id}
.
ADICIONALMENTE, se puede añadir un atributo de SÓLO LECTURA a los JSON de métodos que devuelven productos, para no tener que cruzar la lista de productos con la lista de deseos en front-end sino en back-end (que es más sencillo).
Abro este issue a modo de discusión, para un par de temas acerca de los productos deseados.
Productos deseados: estado
Para obtener el estado de un producto (en concreto, si un usuario lo tiene en su lista de deseados o no) hemos pensado dos formas:
GET /products
,GET /products/{product_id}
... tienen un atributoin_wishlist
que indique (true/false) si ese producto está o no en la lista del usuario que ha realizado la petición/users/{user_id}/wishes_products/{product_id}
para comprobar si el productoproduct_id
está en la lista del usuariouser_id
Personalmente prefiero la primera opción, pero se puede hacer de ambas formas.
Productos deseados: identificador de usuario
Asumo que solamente el usuario que está logueado puede ver/añadir/quitar su lista de productos deseados. ¿Sería correcto crear la operación
GET /users/me/wishes_products
para recibir mi propia lista de deseados (a partir del token enviado)? De esta forma se elimina la necesidad de conocer mi propiouser_id
.