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 提示‘xxx’ 不是内部或外部命令解决方法
Nov 20 NodeJs
详谈nodejs异步编程
Dec 04 NodeJs
PHP和NodeJs开发的应用如何共用Session
Apr 16 NodeJs
nodejs创建web服务器之hello world程序
Aug 20 NodeJs
nodejs 的 session 简单使用
Jun 06 NodeJs
用NodeJS实现批量查询地理位置的经纬度接口
Aug 16 NodeJs
NodeJs下的测试框架Mocha的简单介绍
Feb 22 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
nodejs的路径问题的解决
Jun 30 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
监控Nodejs的性能实例代码
Jul 02 NodeJs
nodejs利用readline提示输入内容实例代码
Jul 15 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
BBS(php &amp; mysql)完整版(三)
2006/10/09 PHP
php下使用SimpleXML 处理XML 文件
2010/02/27 PHP
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
分享php多功能图片处理类
2016/05/15 PHP
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
2016/02/14 Javascript
详解vue.js之绑定class和style的示例代码
2017/08/24 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
wx-charts 微信小程序图表插件的具体使用
2019/08/18 Javascript
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
[47:42]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现截屏的函数
2015/07/25 Python
Python数组遍历的简单实现方法小结
2016/04/27 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
Python XML转Json之XML2Dict的使用方法
2019/01/15 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
python 画3维轨迹图并进行比较的实例
2019/12/06 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
事业单位绩效考核实施方案
2014/03/27 职场文书
模具专业求职信
2014/06/26 职场文书
单位委托书格式范本
2014/09/29 职场文书
党小组意见范文
2015/06/08 职场文书
基于Python实现一个春节倒计时脚本
2022/01/22 Python
oracle删除超过N天数据脚本的方法
2022/02/28 Oracle