More about Backbone Models

Merhaba arkadaslar, bu yazımda Backbone Model konusundaki ikinci yazımı yazacağım. İlk Backbone Model yazısında model’in tanımı, ne için kullanıldığını ve nasıl kullanıldığı gibi detaylara yer vermiştim. İlk yazıya buradan ulaşabilirsiniz. Bu yazımda ise modelimiz üzerinde kullanabileceğimiz ek attribute’lara ve persist konusuna elimden geldiğince değinmeye çalışacağım.

More about of Backbone Models

Her Backbone model nesnesi kendisini diğer nesnelerden ayırt edecek bir unique identifier’a sahiptir. Bunu bize Backbone sağlayacaktır. Bu unique değer cid değeridir. Her Backbone model nesnesi cid değerine oluşturuldaktan sonra sahiptir.

Tarayıcı konsoluna bakalım;

Screenshot from 2015-06-23 23:29:11

 

Yukaridaki çıktıda iki Person objesinin unique olarak cid ile birbirinden ayırt edilebileceği görülecektir.

Ek olarak Backbone bize  modelimiz için id tanımı yapmamızı da sağlar. Bu id değeri cid gibi her model için unique olmak zorunda değildir. Genellikle cid değeri debug ve development sürecinde bize yardımcı olmaktadır. İd değeri ise CRUD operasyonlarında bize yardımcı olucaktır. Ek olarak cid manuel olarak elle set edilemez ama id değeri obje oluşturma anında manuel olarak set edilebilir. Hemen bir model üzerinden id tanımlayalalım;

Çıktı ise;

Screenshot from 2015-06-23 23:43:34

 

 

Her modelin kendine özgü bir attribute alanı vardır. Burada açık olarak id ile değer vermiş bulunduk. Bunu implicit olarak kapalı şekilde vermeye bakalım, model declarasyonumuzu değiştirelim;

Modelimiz üzerinde kullanacağımız idAttribute ile modelimiz için id olacak olan attribute tanımını gerçekleştiririz. Konsolda şunu görebiliriz;

Screenshot from 2015-06-23 23:47:52

İD değerinin CRUD operasyonlarında kullanıldığını söylemiştik. Backbone içinde dahili olarak RESTful apisi olduğu için CRUD işlemlerimiz oldukça kolaydır. RESTful url template örnek olarak şu olsun; ../api/person/

../api/person url’de crud için http methodlarının olduğunu varsayalım. Person nesnemizi crud işlemine tabii tutmak istediğimizde id değeri 5 olduğundan dolayı Backbone ../api/person/5 olacak şekilde url template’i düzenler. Ayrıca Backbone collection üzerinden id bilgisi ile model fetch edilebilinir.

id, cid, idAttribute gibi model üzerinde kullanabileceğimiz özellikler core Backbone özellikleridir. Underscore.js sağlamış olduğu attribute’lar da vardır. Bunlardan bir kaçı;

  • validate(ilk yazıda değinmiştim)
  • isValid : Attribute’ların doğrulugunu/geçerliliğini kontrol eder.
  • url : Collection için kullanabileceğimiz server üzerinde ilgili kaynağın adresidir.
  • urlRoot : Model için server üzerindeki kaynağın adresidir.
  • isNew : Modelin server üzerinde save edilip edilmediğini kontrol eder. Eğer isNew true url tepmlate ile belirlenen adreste POST methodunu çağırır değilse PUT ile update methodunu çağırır.
  • hasChanged : parametre olarak atrribute ismi alır ve ilgili attirubute’un değişimini kontrol eder.

Backbone Model Persist

Backbone için çoğu yerde crud işlemlerinin kolayca yapıldığını görmüşsünüzdür. Bunun altında yatan ise RESTful’dur. Öncelikle restful template’ini vererek işe başlayalım;

* localhost:8080/rest/api/person/ adresimiz crud için url template olacaktır.

  • POST : template
  • GET : template/{id}
  • PUT : template/{id}
  • DELETE : template/{id}

İd değeri  olan person modelimiz için person template;

  • POST : template
  • GET : template/{5}
  • PUT : template/{5}
  • DELETE : template/{5}

Not : Model üzerindeki herhangi bir attribute değişmiş ise POST yerine PUT methodu çağrılacaktır.

Modelimiz için url template tanımı yapalım;

Backbone modelimizi server üzerinde kayıt etmek için urlRoot tanımını modelimiz için yapmamız gerekicektir.

Create

Modelimizi kaydetmek için Backbone model üzerinden save methodunu çağırmamız yeterli olucaktır.

Model nesnemiz üzerinden save methodunu çağrımak yeterli olucaktır. Backbone url template kullanarak gerekli url’e gidip Http POST methodu kullanarak ilgili kaynağı servere iletecektir. ID değeri oluşturulmuş ise PUT, oluşmamış ise POST methodu ile request yapılır. Yukarıdaki örnekte hem default olarak hemde obje oluşurken 5 değeri atanmış bu nedenle PUT ile request yapılacaktır.

Consola bakalım;

Screenshot from 2015-06-24 00:42:10

Post methodunu kullanmaya zorlayalım;

Bunun için save methodunda type eklemek gerekecektir.

Requeste bakalım;

Screenshot from 2015-06-24 00:39:40

 

Read

Modeli serverdan okumak için model nesnemiz üzerinden fetch methodunu çağırmak yeterli olucaktır.

Url template + id ile GET methodu kullanılarak request yapılacaktır.

Screenshot from 2015-06-24 00:46:13

 

Update

Model üzerinde herhangi bir attribute’u model oluşturduktan sonra set ettiğimizde server üzerinden tekrar save ettiğimizde update(put) ile request yapılacaktır. Url template + id;

Screenshot from 2015-06-24 00:53:39

Destroy

Modelimizi server üzerinden destroy etmek için http delete ile request yapmamız lazım. Model üzerinden destroy methodunu çağıralım;

Screenshot from 2015-06-24 00:56:36

 

Gördüğünüz gibi crud işlemleri Backbone tarafında oldukca kolay. İşin Restful tarafına girmedim, blogdaki restful yazılarına bakabilirsiniz.

Gereksinim ve ihtiyaçlara göre sync methodunu override edip persist operasyonlarını kendi ihtiyaçlarınıza göre düzenleyebilirsiniz.

 

Yazımı burada sonlandırmak istiyorum arkadaşlar.

Mutlu kalın, kod’la kalın ve bol bol Çay için

~ Alican Akkus

 

963 Total Views 1 Views Today

  • Nilay

    Selamlar, restful ile crud islemini de eklermisiniz acaba? tesekürler.