ng2 与 node expree get 与post 数据

最近在学习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 });

继续学习中.....

时间: 2024-12-27 15:44:05

ng2 与 node expree get 与post 数据的相关文章

Node.js处理I/O数据之Buffer模块缓冲数据

一.前传 在之前做web时也经常用到js对象转json和json转js对象.既然是Node.js处理I/O数据,也把这个记下来. Json转Js对象:JSON.parse(jsonstr); //可以将json字符串转换成json对象 Js对象转Json:JSON.stringify(jsonobj); //可以将json对象转换成json对符串 var jsonStr='{"name":"cuiyanwei","sex":"男&quo

用node.js(socket.io)实现数据实时推送

在做商品拍卖的时候,要求在商品的拍卖页面需要实时的更新当前商品的最高价格.实现的方式有很多,比如: 1.setInterval每隔n秒去异步拉取数据(缺点:更新不够实时) 2. AJAX轮询方式方式推送数据(缺点:服务端需要在死循环中反复查询数据库) 3.websocket推送数据(缺点:仅支持html5标准的浏览器) socket.io的简要介绍 所有客户端都通过socket.io挂在nodejs服务器上(注意: 只是挂着,不需要任何循环,因为它是事件驱动的):需要推送消息了,服务器就与nod

node.js搭建代理服务器请求数据

1.引入node.js中的模块 1 var http = require("http"); 2 var url = require("url"); 3 var qs = require("querystring"); 2.创建服务器 //用node中的http创建服务器 并传入两个形参 http.createServer(function(req , res) { //设置请求头 允许所有域名访问 解决跨域 res.setHeader("

Node.js获取GET/POST数据

目标:使用Node.js搭建简单服务器提供简单接口,达到两数字加减乘除计算并返回json结果.(通用GET/POST) 知识点 获取GET数据 获取POST数据 了解监听事件 实现 var http = require("http"); //提供web服务 var url = require("url"); //解析GET请求 var query = require("querystring"); //解析POST请求 //服务 var serv

node.js如何读取MySQL数据

先安装mysql模块. node.js默认安装时,模块文件放在 /usr/local/lib/node_modules 这个目录下,为了便宜管理,模块还是统一安装到这里好. $ cd /usr/local/lib $ npm install mysql 程序文件mysql.js var Client = require('/usr/local/lib/node_modules/mysql').Client; var client = new Client(); client.user = 'ro

xhr的send方法以及node如何处理get和post数据

起因:看了阮一峰老师的关于上传文件的文章,进行测试,在使用xhr对象的send方法时遇到问题. 遇到的问题是使用send方法传送过去的数据,在node后台无法接收,经过很多次测试,怀疑是不是send与node不兼容导致. 所以使用了jq的ajax方法进行测试, $("#sub").click(function(){ $.ajax({ url:"/upload", data:"foo=123", type:"POST" }) }

CORS 跨域 node |XMLHttpRequest 跨域提交数据 node

node服务端 app.post('/getdata',function(req,res,next){ req.setEncoding('utf8'); res.setHeader('Access-Control-Allow-Origin','*') req.on('data',function(str){ var json = JSON.parse(str||"{}") ; console.log(json) }) res.end('already get data') }) scr

Node.js——body方式提交数据

引入核心模块 http,利用其 api(http.createServer) 返回一个 http.server 实例,这个实例是继承于net.Server,net.Server 也是通过net.createServer创建的,其中就有data事件,所以request也继承了监听data事件的功能 事件的监听被设计成不断的监听data数据,回调函数参数是一个buffer类型的参数,监听直到end事件被触发 对于body中形如 name=www&title=da&age=12 查询字符串,可以

node.js中的后台数据请求mock,axios

<!-- axios 处理cross跨域 后台配置好的 1.安装 cnpm install --save-dev axios 2.引入axios 到项目 或者组件(仅限当前组件使用) --> // 使用axios 请求 Axios.get("/getuser") .then(res => { //succss console.log(res.data.result); }) .catch(error => { //error console.log(error)