Kay Framework の RESTViewGroup や appengine-rest-server を使って生成した RESTful な API を、JavaScript から呼び出すための jQuery プラグインを作ってみました。
(function(){ function Rest(url){ this.url = url; this.filters = new Array(); } Rest.prototype = { addFilter: function(operation, property, value) { var filter = operation + property + "=" + value; this.filters.push(filter); return this; }, toQuery: function() { var query = this.url; if (0 < this.filters.length) { query += "?" + this.filters.join("&"); } return query }, feq: function(property, value) { return this.addFilter("feq_", property, value); }, flt: function(property, value) { return this.addFilter("flt_", property, value); }, fgt: function(property, value) { return this.addFilter("fgt_", property, value); }, fle: function(property, value) { return this.addFilter("fle_", property, value); }, fge: function(property, value) { return this.addFilter("fge_", property, value); }, fne: function(property, value) { return this.addFilter("fne_", property, value); }, fin: function(property, values) { return this.addFilter("fin_", property, values.join(",")); }, order: function(property) { return this.addFilter("order", "", property); }, get: function(data, callback, type) { return $.get(this.toQuery(), data, callback, type); }, getJSON: function(data, callback) { return $.getJSON(this.toQuery(), data, callback); }, } jQuery.extend({ rest: function(url) { return new Rest(url); } }); })();
わざわざ jQuery プラグインとして実装した理由はありません。なんとなくです。
使い方はこんな感じ。
$.rest("http://sample.appspot.com/rest/Player") .feq("name", "Ichiro") .flt("age", 30) .fge("height", 175) .getJSON(function(ret) { alert(ret); });
RESTViewGroup や appengine-rest-server は、手軽に Web API を生成できて便利です。でも、取得するデータをフィルタリングしたいとき、URL を組み立てるのが面倒でした。
このプラグインを使うことで、URL を組み立てる手間が軽減……するといいな。