Node.js核心模块http客户端
来源:互联网 发布:java怎样输出数组 编辑:程序博客网 时间:2024/05/21 22:59
HTTP客户端
http模块提供了两个函数http.request和http.get,功能是作为客户端想HTTP服务器发送请求。
- http.request(options,callback)发起HTTP请求。接受两个参数,option是一个类似关联数组的对象,表示请求的参数,callback是请求的回调函数。option常用的参数如下所示。
callback传递一个参数,为http.ClientResponse的实例。
http.request返回一个http.ClientRequest的实例。
下面是通过http.request发送POST请求的代码
//httprequest.jsvar http = require('http');var querystring = require('querystring');var contents = querystring.stringify({ name: 'byvoid', email: 'byvoid@byvoid.com', address: 'Zijing 2#, Tsinghua University',});var options = { host: 'www.byvoid.com', path: '/application/node/post.php', method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urleccoded', 'Content-Length': contents.length }};var req = http.request(options, function(res){ res.setEncoding('utf-8'); res.on('data', function(data){ console.log(data); });});req.write(contents);req.end();
- http.get(options,callback)http模块还提供了一个更加简便的方法用于处理GET请求:http.get。它是http.request的简化版,唯一的区别在http.get自动将请求方法设为了GET请求,同时不需要手动调用req.end()。
//httpget.jsvar http = require('http');http.get({host: 'www.byvoid.com'}, function(res){ res.setEncoding('utf-8'); res.on('data', function(data){ console.log(data); });});
1.http.clientRequest
http.ClientRequest是由http.request或http.get返回产生的对象,表示一个已经产生而且正在进行中的HTTP请求。它提供了一个response事件,即http.request或http.get第二个参数指定的回调函数的绑定对象。我们也可以显示地绑定这个事件的监听函数:
//httpresponse.jsvar http = require('http');var req = http.get({host: 'www.byvoid.com'});req.on('response', function(res){ res.setEncoding('utf-8'); res.on('data', function(data){ console.log(data); });});
http.ClientRequest像http.ServerResponse一样也提供了write和end函数,用于向服务器发送请求体,通常用于POST、PUT等操作。所有写结束以后必须调用end函数以通知服务器,否则请求无效。http.ClientRequest还提供了以下函数。
- request.abort():终止正在发送的请求。
- request.setTimeout(timeout, [callback]):设置请求超时时间,timeout为毫秒数。当请求超时以后,callback将会被调用。
此外,还有其他函数,具体内容参见Node.js文档。
2.http.ClientResponse
http.ClientResponse与http.ServerRequest相似,提供了三个时间data、end、和close,分别在数据到达、传输结束和连接结束时出发,其中data时间传递一个参数chunk,表示接收到的数据。
http.ClientResponse也提供了一些属性,用于表示请求的结果状态,如下表。
http.ClientResponse还提供了一下几个特殊的函数。
- response.setEncoding([encoding]):设置默认的编码,当data事件被触发时,数据将以encoding编码。默认值是null,即不编码,以Buffe的形式存储。常用编码为utf-8.
- response.pause():暂停接受数据和发送事件,方便实现下载功能。
- response.resume():从暂停的状态中恢复。
总结
当学习完Node.js的服务器端和客户端后,发现node.js的服务器端-客户端模式和以前学习的java框架有些类似,也有些不同。不同之处在于,node.js明确地将客户端和服务器端分别换分出request、response两个对象,即客户端包含了http.ClientRequest,http.ClientResponse对象;服务器端包含了http.ServerRequest,http.ServerResponse对象。而以前学习时request对象就表示了客户端,response就表示了服务器端。
服务器端产生ServerRequest和ServerResponse对象的方法时,出发Server对象的request事件,在回调函数中第一个参数表示ServerRequest对象,第二个参数表示ServerResponse对象。客户端产生ClientRequest对象的方法时通过调用http.request或http.get方法。ClientResponse对象是在其回调函数中唯一的参数。
似乎ClientRequest和ServerReponse,ServerRequest和ClientResponse这两对,每对的两个对象有着相似之处。这是因为他们通过向另一方发送数据和接受数据。据此,我还画了个图,表明他们各自的位置和作用。
- Node.js核心模块http客户端
- 【Node核心模块HTTP】
- node.js核心模块
- Node.js核心模块
- Node.js核心模块
- Node.js HTTP客户端
- node.js http客户端
- Node.js HTTP模块
- node.js核心模块--笔记
- Node.js核心模块方法
- node.js 的核心模块
- Node.js的核心模块
- Node.js 的 http 模块
- Node.js中的HTTP模块
- node.js的http模块
- Node.js基本模块http
- Node.js HTTP模块与事件模块
- Node.js学习(9)----核心模块
- 包名和目录名的关系
- 欢迎使用CSDN-markdown编辑器
- eshop电子商城,app
- iOS 11 ARKit:真实世界实时导航与地图信息点定位
- 如果你想学前端,只要不是一时兴起,有毅力,我都支持
- Node.js核心模块http客户端
- Jedis——最简单的操作数据库方式
- 浏览器chrome调试js代码简易教程
- 2 Zabbix Service端安装及配置
- GlusterFS 3.4.2 安装记录
- ACdream 1107 瑶瑶迷上新游戏 (计算几何+确认抛物线)
- 数据库——(3)数据操作
- 公务员面试真题解析
- kmalloc/kfree,vmalloc/vfree函数用法和区别