ng2 與 node expree get 與post 數據
阿新 • • 發佈:2017-08-04
方式 method sta ext delete 交互 ring render hset
最近在學習ng2,node.js等。 redis 數據庫
實現angular 與 node 後臺數據交互
搭建的環節為
1、ng2 本地服務 http://127.0.0.1:4200
2、node.js express 後臺服務 為:http://127.0.0.3000 (數據庫使用redis,)
在ng2 通過 http請求調用 node後臺服務數據 (會遇到同源策略問題 )
在node服務的 app.js 中 把同源策略問題解決
app.all(‘*‘, function(req, res, next) { res.header("Access-Control-Allow-Origin", "http://127.0.0.1:4200"); res.header("Access-Control-Allow-Headers", "Content-Type");// "X-Requested-With"); res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); res.header("X-Powered-By",‘ 3.2.1‘) res.header("Content-Type", "application/json;charset=utf-8" );// "application/json;charset=utf-8"); //text/html;charset=utf-8 next(); });
ng2 請求 get 請求
getUsers():Observable < User[] > { return this.http.get(this.userListUrl) .map(this.extractData) .catch(this.handleError); // .catch(this.handleError); }
node接受處理 ,(redis是非堵塞方式,在後臺改成同步方式處理數據)
1 router.get(‘/getUserList‘, function(req, res, next) { 2 // res.writeHead(200,{‘Content-Type‘:‘text/html;charset=utf-8‘}); 3 co(function *() { 4 try{ 5 var list = []; 6 7 /* if(sn=="") 8 {*/ 9 var keys=yield findKey2("users*"); 10 console.log(keys);11 for(var j in keys) 12 { 13 console.log(keys[j]); 14 var getValues= yield hGetAll2(keys[j]); 15 list.push(getValues); 16 console.log(getValues.name); 17 } 18 // res.writeHead(200,{‘Content-Type‘:‘text/html;charset=utf-8‘}); 19 res.json({"data": list}); 20 //res.render(‘start/devcontrol‘, { title: ‘測試redis‘ ,‘user‘:msg }); 21 } 22 catch (e) { 23 console.log(e) 24 } 25 }),(function(err,d){console.log(err)}); 26 });
2、post 數據 按照{ ‘Content-Type‘: ‘application/json‘ }
ng2 請求 提交{id:id, name:name } 對象
1 create(id:number,name: string): Observable<User> { 2 let headers = new Headers({ ‘Content-Type‘: ‘application/json‘ }); 3 let options = new RequestOptions({ headers: headers }); 4 return this.http.post(this.userSaveUrl, JSON.stringify({id:id, name:name }) ,options) 5 .map(this.extractData) 6 .catch(this.handleError) 7 8 }
node 接受處理 bodyParms=req.body; 等保存成功之後 再返回到ng2
1 router.post(‘/saveUser‘, function(req, res, next) { 2 co(function *() { 3 try{ 4 var list = [],newUser={}; 5 6 var bodyParms=req.body; 7 console.log(req.body); 8 console.log(req.query); 9 console.log(req.params); 10 var key="users"+bodyParms.id; 11 12 newUser.id=bodyParms.id; 13 newUser.name=bodyParms.name; 14 console.log(newUser); 15 for(var j in newUser){ 16 var x = yield hsetkey2(key,j,newUser[j]); 17 } 18 var getValues= yield hGetAll2(key); 19 res.json({"data": getValues}); 20 21 } 22 catch (e) { 23 console.log(e) 24 } 25 }),(function(err,d){console.log(err)}); 26 });
繼續學習中.....
ng2 與 node expree get 與post 數據