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服务器(9):实现非阻塞操作
Dec 18 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
Nodejs如何搭建Web服务器
Mar 28 NodeJs
nodejs简单实现操作arduino
Sep 25 NodeJs
Nodejs 搭建简单的Web服务器详解及实例
Nov 30 NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
Jul 31 NodeJs
Nodejs中的JWT和Session的使用
Aug 21 NodeJs
NodeJS实现同步的方法
Mar 02 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 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中对数据库操作的封装
2006/10/09 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
2014/10/14 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
让alert不出现弹窗的两种方法
2014/05/18 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
Python Socket编程入门教程
2014/07/11 Python
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
Python实现的rsa加密算法详解
2018/01/24 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
python文件及目录操作代码汇总
2020/07/08 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
CSS3的RGBA中关于整数和百分比值的转换
2015/08/04 HTML / CSS
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
领导接待方案
2014/03/13 职场文书
市场部岗位职责
2015/02/12 职场文书
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android