2012-03-14 13 views
13

Soy totalmente nuevo en la biblioteca de Backbone.js y leí toda la documentación y comprendí el funcionamiento de la biblioteca. En los casos siguientes, ¿cuál debería ser la respuesta del servidor para el correcto funcionamiento de la aplicación diseñada utilizando la red troncal (sin poner un trazo/código adicional)?Introducción a backbonejs: qué debería devolver un servidor

asumen un modelo como el de abajo

window.person = Backbone.Model.extend({ 
    defaults: { 
     name: "", 
     email: "[email protected]" 
    }, 
    urlRoot: "PersonApp" 
}); 
  1. Lo JSON debe devolver servidor asumiendo validación fue bien para model.save()

  2. Lo JSON debe devolver servidor para model.fetch()

  3. Lo JSON debe devolver el servidor por model.destroy()

Respuesta

15

Si usted tiene una mirada en el Backbone.Sync documentation, se dice que usted debe responder a las solicitudes con los atributos que han cambiado en el servidor.

Así que para responder a sus preguntas:

  1. La solicitud JSON para model.save debe devolver los atributos que han cambiado como parte de la guardar. En el caso de una creación, este sería el modelo completo; en el caso de la actualización, solo los campos que han cambiado. (O si eres perezoso y no te importa actualizar todo el modelo del lado del cliente, puedes simplemente devolver todo el modelo).

    Así que una respuesta aceptable sería { 'name' : 'a name', 'email' : '[email protected]' }

  2. Fetch sólo debe devolver el modelo en forma de JSON. Entonces, el mismo ejemplo que utilicé para model.save funcionaría.

  3. No estoy del todo seguro, pero no creo que Backbone valide los datos devueltos de las solicitudes de eliminación, por lo que debería poder devolver cualquier cosa, siempre que no se trate de un error de HTTP. De acuerdo con @ a.real.human.being a continuación, una respuesta vacía también causa errores. Entonces, devolver un 200 con "OK" en el cuerpo (o similar) parece un plan razonable.

+4

JSON respuesta de 'destroy' no importa. Backbone escucha para una respuesta 20X para el éxito. – abraham

+0

@abraham Sí, lo sé, la red troncal depende del estado HTTP 200 para aceptar, por lo que cualquier cosa que devuelva el estado HTTP significa que la solicitud se realizó correctamente para la red troncal – Deeptechtons

+3

@abraham Este no es el caso. Si no envía una respuesta JSON en un 'destroy', se genera un' error' en el modelo. Sin embargo, si envía algo en absoluto (incluso 'json_encode (" feliz cumpleaños ")'), entonces lo trata como un éxito. –

Cuestiones relacionadas