dojo 十二 rest
从今年8月份开始一直在做以HTML5+CSS3+Dojo实现前端设计,以REST风格实现后台数据请求的项目研发。实践出真知,现在对研发中用到的技术和遇到的问题做一个总结。
后台服务没有采用那些主流的框架组合,仅仅采用了resteasy,相应的前端采用Dojo的JsonRestStore进行数据请求。
var store =newJsonRestStore({target: path});
store.fetch({
query: encodeURI(query),
onComplete:function(items,request){
/*请求成功后的操作*/
},
 onError:function(error,request){
/*请求失败后的操作*/
}
});
declare("util.DataManager",null,{
//数据{target:"{id} or ?{id=1}",value:object}
 data:null,
//访问URL::http://localhost:8080/rest
 path:null,
 _init:function(){
this.data =newMemory({idProperty:"target"});
},
//清空缓存数据
 clear:function(){
var it =this;
var r = it.data.query({});
  arrayUtil.forEach(r,function(a){
   it.data.remove(a.target);
});
},
//通过条件获取数据[]
 query:function(t/*target,query*/, r/*recall,boolean*/, c/*cache,boolean*/, callback/*function (result) {}*/){
if(!t || t.replace(" ","")=="")
   callback(null);
var it =this;
var a = it.data.get(t);
if(!r && a){
   callback(a.value);
}else{
var store =newJsonRestStore({target: it.path});
   store.fetch({
query: encodeURI(t),
    onComplete:function(items,request){
var d =items.data;
var p =items.path;
if(c && d){
      it.data.remove(t);
      it.data.add({target:t, value:{data: d, path: p}});
}
callback(a.value);
},
    onError:function(error,request){
/*请求失败后的操作*/
}
});
}
}
});
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号