Retornar formato específico como JSON en Grails
Saludos a todos:
En Grails podemos retornar en formato JSON la respuesta desde el controlador:
¿ Es la forma más óptima de formatear la respuesta ?
Sabemos que el método list() devuelve una lista de los objetos de dominio, y se itera a través de collect, ¿ Esto conlleva a una penalización en el rendimiento ? Me queda la duda. En espera de sus valiosas respuestas.
Gracias
Saludos cordiales
- Inicie sesión o regístrese para enviar comentarios
No necesariamente ( en
No necesariamente ( en comparación con otros formatos ) pero tienes que asegurarte que regreses solo los datos necesarios.
Si lo hicieras en otros formato ( o con otro método que no fuera collect ) de todas formas la mayor parte del tiempo estaria en el intercambio de información en la red y no necesariamente en el codificado.
Para no especular, lo mejor que puedes hacer es medir. Ve cuánto se tarda, compararlo con otra forma y toma una decisión. Si el tiempo es insignificante y tienes otras areas donde mejorar el performance ( por ejemplo hacer la consulta correcta a la base de datos, y /o modelar correctamente tus objetos, etc ).
En el contexto del framework ...
Gracias por responder Oscar. ¿ A que otros formatos te refieres ? ¿ Porqué pudieran ser más rápidos que JSON ? ¿ Con cuál otro método diferente a collect sería más óptimo y porqué ? Entiendo que debo hacer la consulta correcta a la base de datos y modelar correctamente mis objetos, pero ese no es el punto. ¿ Podrías postear algún código ? Perdona pero me quedo con más dudas que con soluciones. Nuevamente gracias por tu respuesta.
Saludos cordiales
yo lo veo bien
Con el
estás creando una lista de mapas que es lo que vas a devolver, no tus objetos completos.
JSON es bastante simple y rápido de generar y también de parsear, por eso es tan popular. Más rápido pues solamente algún formato binario o propietario, y la mejora vendría como dice Oscar en la transmisión de datos, no tanto en la codificación.
Me ha quedado claro ...
Gracias Ezamudio, me ha sido de gran ayuda tu respuesta como también la de Oscar. Saludos !
Collect
¿Esto conlleva a una penalización en el rendimiento?
Nop, collect va iterando de uno en uno (http://groovy.codehaus.org/groovy-jdk/java/util/Collection.html#collect()), tal vez te interese ver el proyecto Gpars ()
Yo también lo veo bien, solo que si tienes un millón de productos o más, yo no usaría collect pelón.
Interesante el proyecto gpars
Gracias Rodrigo. Interesante el Paralelismo de datos, gracias por la info. En algunos escenarios que se requiera resolverlo mediante procesos asincrónicos. Saludos !
millón de datos
Si vas a devolver un millón de datos, yo diría que todo el API está mal. Un navegador no va a poder desplegar un millón de datos, y si pudiera, el humano que lo controla no va a revisar un millón de registros en el navegador, le pongas la interfaz que le pongas.
Lo mismo va para un dispositivo móvil.
Una locura un millón de datos ...
Es correcto Ezamudio, por supuesto que desde el cliente se tomarían los criterios de filtrado, es un ejemplo de juguete el posteado. Gracias por el aporte. Saludos !