从零开始学习Node.js系列教程一:http get和post用法分析


Posted in Javascript onApril 13, 2017

本文实例讲述了Node.js中http get和post用法。分享给大家供大家参考,具体如下:

httpserverrequestget.js

/*
获取GET请求内容
由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数。
node.js中url模块中的parse函数提供了这个功能。
 */
var http = require('http');
var url = require('url');
var util = require('util');
http.createServer(function(req, res){
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end(util.inspect(url.parse(req.url, true)));
}).listen(3000);
//在浏览器中访问http://localhost:3000/user?name=joey&email=joey@joey.com 然后查看返回结果

从零开始学习Node.js系列教程一:http get和post用法分析

httpserverrequestpost.js

/*
POST请求的内容全部的都在请求体中,http.ServerRequest并没有一个属性内容为请求体,原因是等待请求体传输可能是一件耗时的工作,
比如上传文件,而很多时候我们可能并不需要理会请求体的内容,恶意的POST请求会大大消耗服务器的资源,所有node.js默认是不会解析请求体的,
当你需要的时候,需要手动来做。
 */
var http = require('http');
var querystring = require('querystring');
var util = require('util');
http.createServer(function(req, res){
  var post = '';   //定义了一个post变量,用于暂存请求体的信息
  req.on('data', function(chunk){  //通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中
    post += chunk;
  });
  req.on('end', function(){  //在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回。
    post = querystring.parse(post);
    res.end(util.inspect(post));
  });
}).listen(3000);

注意:不要在真正的生产应用中使用上面这种简单的方法来获取POST请求,因为它有严重的效率问题和安全问题,这只是一个帮你理解的示例。

知识扩展:util.inherits继承

/*
 util.inherits
 定义了一个基础对象Base和一个继承自Base的Sub,Base有三个在构造函数内定义的属性和一个原型中定义的函数,通过util.inherits实现继承
 注意,Sub仅仅继承了Base在原型中定义的函数,而构造函数内部创造的base属性和sayHello函数都没有被Sub继承。
 */
var util = require('util');
function Base(){
  this.name = 'base';
  this.base = 1991;
  this.sayHello = function(){
    console.log('Hello ' + this.name);
  };
}
Base.prototype.showName = function(){
  console.log(this.name);
};
function Sub(){
  this.name = 'sub';
}
util.inherits(Sub, Base);
var objBase = new Base();
objBase.showName();
objBase.sayHello();
console.log(objBase);
var objSub = new Sub();
objSub.showName();
//objSub.sayHello();
console.log(objSub);

希望本文所述对大家nodejs程序设计有所帮助。

Javascript 相关文章推荐
javascript 随机展示头像实现代码
Dec 06 Javascript
js保留两位小数使用toFixed实现
Jul 29 Javascript
node.js中的fs.futimes方法使用说明
Dec 17 Javascript
node.js中的fs.appendFile方法使用说明
Dec 17 Javascript
JavaScript中的console.log()函数详细介绍
Dec 29 Javascript
javascript 构造函数方式定义对象
Jan 02 Javascript
jquery zTree异步加载简单实例讲解
Feb 25 Javascript
AngularJS执行流程详解
Feb 17 Javascript
使用JavaScript开发跨平台的桌面应用详解
Jul 27 Javascript
实现一个完整的Node.js RESTful API的示例
Sep 29 Javascript
JS运动特效之任意值添加运动的方法分析
Jan 24 Javascript
vue实现通讯录功能
Jul 14 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
Apr 13 #Javascript
JavaScript数据结构之二叉树的计数算法示例
Apr 13 #Javascript
JavaScript数据结构之二叉树的删除算法示例
Apr 13 #Javascript
JavaScript数据结构之二叉树的查找算法示例
Apr 13 #Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
Apr 13 #jQuery
JavaScript中this的用法及this在不同应用场景的作用解析
Apr 13 #Javascript
vue如何引用其他组件(css和js)
Apr 13 #Javascript
You might like
PHP字符转义相关函数小结(php下的转义字符串)
2007/04/12 PHP
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
超链接的禁用属性Disabled使用示例
2014/07/31 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
js实现动态创建的元素绑定事件
2016/07/19 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
Javascript的this用法
2017/01/16 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
Python实现字符串逆序输出功能示例
2017/06/24 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
浅析python内置模块collections
2019/11/15 Python
pyqt5 QlistView列表显示的实现示例
2020/03/24 Python
简单了解pytest测试框架setup和tearDown
2020/04/14 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
HTML5 canvas实现的静态循环滚动播放弹幕
2021/01/05 HTML / CSS
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
超市业务员岗位职责
2013/12/05 职场文书
简历中的自我评价怎么写
2014/01/29 职场文书
小学中秋节活动方案
2014/02/06 职场文书
年会搞笑主持词
2014/03/27 职场文书
《锄禾》教学反思
2014/04/08 职场文书
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers