ng2 与 node expree get 与post 数据
2017-08-04 20:55 ycm 阅读(412) 评论(0) 编辑 收藏 举报最近在学习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 });
继续学习中.....