Entries

スポンサーサイト

カテゴリ:スポンサー広告
更新日:--------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

backbone.js - Modelの永続化を試す。

カテゴリ:backbone.js
更新日:2012-12-23
backbone.js をお試し中。

> 正月休みは、backbone.js を試してみようかな。 - fintopo
> backbone.js - まずはViewとModelとの連携をやってみた。 - fintopo

さて、今回のbackbone.jsは、Modelの永続化を試してみる。
参考にしたのは、次のサイト。

> Backbone.js入門 「Model」 - Qiita

APIは、RESTfulを想定しているらしい。RESTfulかぁ・・・まぁ、いいや。
まずはサーバーの用意。

Google App EngineをRESTfulサーバーにするappengine-rest-serverというソフトがあるので、これを使うことにする。

> appengine-rest-server - REST server for Google App Engine applications. - Google Project Hosting

appengine-rest-server を使えば、サーバーサイドの開発なしでアプリケーションが作れるわけで、データ構造が単純ならいいよね。まぁ、サーバークライアントモデルの二層構造ってことになるので、Web的にはどうなんかなぁ、とも思うけど。アプリケーションサーバーとしての処理ができるように拡張はできないのかしらん?

GAEも1年以上使ってないなぁ。だいぶ変わってるんだろうなぁ。
PCも新しくして環境がないので、最新版を取得してインストール。Pythonは2.7が使えるようになったのか。

> Google App Engine — Google Developers

モデルをfetchして取得、saveで保存。簡単やね。
で、済めばよかったんだけど、やっぱりうまくいかなくて引っかかる。

引っかかったのは、APIのJSON(XML)構造との不整合だった。

var messages = Backbone.Collection.extend({
url: '/rest/Message',
dataType: 'json',
model: message,
parse: function(resp) {
return resp.list.Message;
}
});
これは、fetchの方。取得したデータをparse関数で処理して一覧を取り出す必要があった。
戻り値の構造に合わせて変えないといけないんだろうなぁ。

var message = new ASAGAO.Model.Message({
Message: {
body_text: body
}
});
message.save();
こっちは保存時。これも構造に合わせて階層化した。
Modelの中で処理できるようにしたほうがいいかなぁ?

まだ、更新(PUT)と削除(DELETE)を試してない。
けど、まぁ、これはいいや、みたいなのがある。
RESTfulでないAPIでも使えないと困るなぁ、というのがある。
PUTやDELETEメソッドは、サーバー側の開発が少しメンドイし、既存のシステムで使えないと意味ないし。
emulateHTTP というフラグを有効化するとPUTやDELETEの変わりにPOSTにしてくれるそうなので、そちらで試そうと思う。
スポンサーサイト

Appendix

プロフィール

いむら@fintopo いむら@fintopo

フリーのシステムエンジニア兼プログラマです。趣味はガーデニングとカメラ。2017年4月にα7IIを買いました。フルサイズ一眼初心者です。

このページのQRコード

季節暦

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。