NodeJS收发GET和POST请求的示例代码


Posted in NodeJs onAugust 25, 2017

本文介绍了NodeJS收发GET和POST请求的示例代码,分享给大家,也给自己留个笔记

NodeJS收发GET和POST请求的示例代码

一 express框架接收

app.get('/',function(req,res) {

  var url = req.query.url;

  var name = req.query.name;

  console.log(url, name);

});

二 接收Get

1. get参数在req.url上

2. 使用url.parse将数据由字符串转变为obj

index.js:

var http = require('http');

var url = require('url');

var util = require('util');

 

//req 请求信息  res返回信息

http.createServer(function(req, res){

  res.writeHeader(200, {'Content-Type':'text/javascript;charset=UTF-8'}); //状态码+响应头属性

 

  // 解析 url 参数

  var params = url.parse(req.url, true).query; //parse将字符串转成对象,req.url="/?url=123&name=321",true表示params是{url:"123",name:"321"},false表示params是url=123&name=321

  res.write("网站名:" + params.name);

  res.write("\n");

  res.write("网站 URL:" + params.url);

  res.end();

 

}).listen(3000);

浏览器打开:http://127.0.0.1:3000/?url=123&name=321

网页显示:

网站名:321

网站 URL:123

三 发送Get

index.js:

var http = require('http'); 

  

var qs = require('querystring'); 

  

var data = { 

  a: 123, 

  time: new Date().getTime()};//这是需要提交的数据 

  

  

var content = qs.stringify(data); 

  

var options = { 

  hostname: '127.0.0.1', 

  port: 10086, 

  path: '/pay/pay_callback?' + content, 

  method: 'GET' 

}; 

  

var req = http.request(options, function (res) { 

  console.log('STATUS: ' + res.statusCode); 

  console.log('HEADERS: ' + JSON.stringify(res.headers)); 

  res.setEncoding('utf8'); 

  res.on('data', function (chunk) { 

    console.log('BODY: ' + chunk); 

  }); 

}); 

  

req.on('error', function (e) { 

  console.log('problem with request: ' + e.message); 

}); 

  

req.end();

四 接收Post

 当请求这个页面时,如果post数据中没有name和url,则返回一个提交页面;如果有name和url,则打印。

1. post请求会触发"data"事件。

2. chuck使用+=保存,因为会额外请求favicon.ico,导致body={}。

3. 请求结束,会触发"end"事件。将chuck反序列化querystring.parse(body)为对象数组, 使用body.name访问post变量。

index.js:

var http = require('http');

var querystring = require('querystring');

 

var postHTML =

  '<html><head><meta charset="utf-8"><title>菜鸟教程 Node.js 实例</title></head>' +

  '<body>' +

  '<form method="post">' +

  '网站名: <input name="name"><br>' +

  '网站 URL: <input name="url"><br>' +

  '<input type="submit">' +

  '</form>' +

  '</body></html>';

 

http.createServer(function (req, res) {

  //暂存请求体信息

  var body = "";

 

  //请求链接

  console.log(req.url);

 

  //每当接收到请求体数据,累加到post中

  req.on('data', function (chunk) {

    body += chunk; //一定要使用+=,如果body=chunk,因为请求favicon.ico,body会等于{}

    console.log("chunk:",chunk);

  });

 

  //在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回。

  req.on('end', function () {

    // 解析参数

    body = querystring.parse(body); //将一个字符串反序列化为一个对象

    console.log("body:",body);

    // 设置响应头部信息及编码\<br><br>   res.writeHead(200, {'Content-Type': 'text/html; charset=utf8'}); 



 

    if(body.name && body.url) { // 输出提交的数据

      res.write("网站名:" + body.name);

      res.write("<br>");

      res.write("网站 URL:" + body.url);

    } else { // 输出表单

      res.write(postHTML);

    }

    res.end();

  });

}).listen(3000);

浏览器中打开:http://127.0.0.1:3000/

第一次访问127.0.0.1,post中没有name和url,显示提交页面。

NodeJS收发GET和POST请求的示例代码

点击提交后,网页会打印出如下结果。

NodeJS收发GET和POST请求的示例代码

问题:

1. req.on("end"事件会多次触发。因为会请求favicon.ico。

NodeJS收发GET和POST请求的示例代码

2.  res.writeHead(200, {'Content-Type': 'text/html; charset=utf8'});

text/html的意思是将文件的content-type设置为text/html的形式,浏览器在获取到这种文件时会自动调用html的解析器对文件进行相应的处理。

text/plain的意思是将文件设置为纯文本的形式,浏览器在获取到这种文件时并不会对其进行处理。

五 发送Post

index.js:

var http = require('http');

var querystring = require('querystring');

 

var contents = querystring.stringify({

  name:'byvoid',

  email:'byvoid@byvoid.com',

  address:'Zijing'

});

 

var options = {

  host:'www.byvoid.com',

  path:'/application/node/post.php',

  method:'POST',

  headers:{

    'Content-Type':'application/x-www-form-urlendcoded',

    'Content-Length':contents.length

  }

}

 

var req = http.request(options, function(res){

  res.setEncoding('utf8');

  res.on('data',function(data){

    console.log("data:",data);  //一段html代码

  });

});

 

req.write(contents);

req.end;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
轻松创建nodejs服务器(8):非阻塞是如何实现的
Dec 18 NodeJs
nodejs URL模块操作URL相关方法介绍
Mar 03 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 NodeJs
Nodejs之TCP服务端与客户端聊天程序详解
Jul 07 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
nodejs使用redis作为缓存介质实现的封装缓存类示例
Feb 07 NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 NodeJs
监控Nodejs的性能实例代码
Jul 02 NodeJs
浅谈vue websocket nodeJS 进行实时通信踩到的坑
Sep 22 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 #NodeJs
Nodejs 复制文件/文件夹的方法
Aug 24 #NodeJs
使用Nodejs连接mongodb数据库的实现代码
Aug 21 #NodeJs
nodejs动态创建二维码的方法
Aug 12 #NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 #NodeJs
Windows下快速搭建NodeJS本地服务器的步骤
Aug 09 #NodeJs
让nodeJS支持ES6的词法----babel的安装和使用方法
Jul 31 #NodeJs
You might like
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
2012/04/09 PHP
PHP实现克鲁斯卡尔算法实例解析
2014/08/22 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
react路由配置方式详解
2017/08/07 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
分析JS单线程异步io回调的特性
2017/12/01 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
js Array.slice的8种不同用法示例
2019/07/10 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
python处理按钮消息的实例详解
2017/07/11 Python
Python 装饰器使用详解
2017/07/29 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
Anaconda下配置python+opencv+contribx的实例讲解
2018/08/06 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
python初步实现word2vec操作
2020/06/09 Python
文明宿舍获奖感言
2014/02/07 职场文书
投资协议书范本
2014/04/21 职场文书
经济贸易系毕业生求职信
2014/05/31 职场文书
节约用水标语
2014/06/11 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
2015年社区矫正工作总结
2015/04/21 职场文书
七年级作文之游记
2019/12/11 职场文书