javascript - BackboneJS Significance of Model/Collection urlRoot/URL -
let's have person model/collection below;
define([ 'base/basemodel' ], function(basemodel) { var person = basemodel.extend({ idattribute: "personid", urlroot: "manapp/person/", defaults: { "personid": null } return person; }); define([ 'base/basecollection', 'model/person' ], function(basecollection, person) { var personcollection = basecollection.extend({ url: "manapp/person", model: person }); return personcollection; });
as can see, have urlroot/url attribute in model/collection.
my question significance of specifying values attribute? corresponding rest resource? if yes, operation ? when use model , collection them ?
the urlroot , url define server paths request sent.
edit: backbone docs:
url:
returns relative url model's resource located on server. if models located somewhere else, override method correct logic.
urlroot:
specify urlroot if you're using model outside of collection, enable default url function generate urls based on model id. "[urlroot]/id" normally, won't need define this.
when using end mvc framework such laravel implements rest api, can define path in router , handle request path controller object.
i'll use laravel illustration, because makes clear.
when define example:
urlroot: "/api_v1/entities/parents"
laravel implements 'resourceful' controllers can handle different rest calls sent specific urlroot on server:
route::resource('entities/parents', 'parentscontroller');
where 'parentscontroller' implements set of methods handle different rest calls can occur.
'get' not http verb can use, 'post', 'put' or 'delete'.
in backbone: 'get', call 'fetch()' on object.
'post', call 'save()' on object.
'delete', call 'destroy()' on object.
'put', call 'save()' on object, after fetched model has been updated. example:
var parent_model = new parent_model({'id': 1}); parent_model.fetch(); parent_model.set('parent_name', 'some_parent'); parent_model.save();
in above example, 'put' request sent following path:
/api_v1/entities/parents/1
the controller implements function handles rest call on server this:
public function update($id){ //update code db here };
aside these standard rest calls, laravel implements 'index' method, doesn't take id parameter, , handles generic 'get' request.
tend use fetching collections server:
example, index() method parents return parents, , not work on 1 specific parent record.
hope helps.
Comments
Post a Comment