1. 程式人生 > >ng2 與 node expree get 與post 數據

ng2 與 node expree get 與post 數據

方式 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 數據