En las aplicaciones de una sola página vamos a hacer uso de este tipo de servicios ya que es lo que nos permitirá manipular datos desde una fuente a través de diferentes peticiones, cuando hablamos de este tipo de aplicaciones Backbone.js nos simplifica mucho el trabajo y terminamos escribiendo menos código que si estuviésemos utilizando alguna otra solución.
Obteniendo Modelos del Servidor
Cuando hablamos de modelos, usualmente estos los vamos a obtener de una fuente o repositorio persistente que es el que se encargará de almacenar los datos en una base de datos relacional y con ello la próxima vez que los necesitemos los tendremos disponibles.
Una vez obtenidos los modelos automáticamente se realiza un método set() que se encargará de crear la colección correspondiente de nuestros nuevos modelos.
En la siguiente imagen veremos un código que nos permite poner en práctica el uso del método fetch() que hemos descrito:
Como vemos definimos la estructura de nuestro modelo, luego creamos una colección indicando el modelo y la URL de la cual obtendremos los datos y finalmente instanciamos la colección y le aplicamos el método fetch que va a enviar la petición GET a la URL señalada. Con esto habremos obtenido en pocas líneas de código los modelos necesarios.
Guardando Modelos al Servidor
Como no todo es solamente consultar datos, también tenemos la posibilidad de guardar la información en el servidor de origen, donde esta información caerá en alguna base de datos y estará disponible para futuras consultas.
Con el método Collections.create() podemos generar un nuevo modelo, agregarlo a la colección y además enviarlo al servidor, todo esto en un solo llamado al método, veamos en la siguiente imagen el código que utilizaríamos para guardar un modelo en el servidor:
Como vemos utilizamos el método save() en este caso para modificar un modelo ya existente y el método create() lo reservamos para crear un nuevo modelo dentro de la aplicación, esto no tiene que ser así siempre, sin embargo es una de las formas más simples de lograrlo.