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服务器(2):nodejs服务器的构成分析
Dec 18 NodeJs
Nodejs为什么选择javascript为载体语言
Jan 13 NodeJs
nodejs实现获取某宝商品分类
May 28 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
NodeJs的优势和适合开发的程序
Aug 14 NodeJs
win系统下nodejs环境安装配置
May 04 NodeJs
nodejs批量下载图片的实现方法
May 19 NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
nodejs使用express获取get和post传值及session验证的方法
Nov 09 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
nodeJs项目在阿里云的简单部署
Nov 27 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+javascript实现二级级联菜单的制作
2008/05/06 PHP
linux下 C语言对 php 扩展
2008/12/14 PHP
php匹配字符中链接地址的方法
2014/12/22 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
2017/03/31 PHP
jquery中this的使用说明
2010/09/06 Javascript
jquery判断checkbox是否选中及改变checkbox状态的实现方法
2016/05/26 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
Vue响应式原理深入解析及注意事项
2017/12/11 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
axios使用拦截器统一处理所有的http请求的方法
2018/11/02 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
python操作ie登陆土豆网的方法
2015/05/09 Python
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
Python Selenium参数配置方法解析
2020/01/19 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
两道JAVA笔试题
2016/09/14 面试题
经济与贸易专业应届生求职信
2013/11/19 职场文书
审美与表现自我评价
2015/03/09 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
幸福终点站观后感
2015/06/04 职场文书
驾驶员管理制度范本
2015/08/06 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript
Win11 25163.1010更新补丁KB5016904推送,测试服务验证管道(附更新修复汇总)
2022/07/23 数码科技