node.js第11课(HTTPclient)



一、http模块提供了两个函数http.request和http.get,功能是作为client向HTTPserver发起请求。

Ext.Ajax.request({},function(response))

1.http.request(options,callback)发起HTTP请求,接受两个參数,option是一个类似关联数组的对象,

表示请求的參数,callback是请求的回调函数,option经常使用的參数例如以下

host:请求站点的域名或IP地址

port:请求站点的端口,默认是80,

method:请求方法,模式是GET/POST

path:请求的相对于根的路径,默认是"/"。QueryString应该包括在当中,比如/search?query=marico

headers:一个关联数组对象,为请求头的内容

callback传递一个參数,为http.ClientResponse的实例

http.request返回一个http.ClientRequest的实例

//clientRequest.js

var http=require(‘http‘);

var querystring=require(‘querystring‘);

//启动服务

http.createServer(function(req,res){

console.log(‘请求到来,解析參数‘);

var post=‘‘;

req.on(‘data‘,function(chunk){

post+=chunk;

});

req.on(‘end‘,function(){

post=querystring.parse(post);

//解析完毕

console.log(‘參数解析完毕,返回name參数‘);

res.end(post.name);

});

}).listen(3000,‘127.0.0.1‘);

//client请求

var contents=querystring.stringify({

nane:‘octopus‘,

age:20,

address:‘beijing‘

});

var options={

host:‘localhost‘,

path:‘/‘,

port:3000,

method:‘POST‘,

headers:{

‘Content-Type‘:‘application/x-www-form-urlencoded‘,

‘Content-Length‘:contents.length

}

};

var req=http.request(options,function(res){

res.setEncoding(‘utf-8‘);

res.on(‘data‘,function(data){

console.log(‘后台返回数据‘);

console.log(data);

})

});

req.write(contents);

req.end();

2.http.get(options,callback) http模块还提供了一个更加简便的方法用于处理GET请求:http.get。它是http.request的简化版,

唯一的差别在于http.get自己主动将请求方法设为GET请求,同一时候不须要手动调用req.end();

实例:clientGet.js

var http=require(‘http‘);

var url=require(‘url‘);

var util=require(‘util‘);

//启动服务

http.createServer(function(req,res){

console.log(‘请求到来,解析參数‘);

var params=url.parse(req.url,true);

console.log(‘解析完毕‘);

console.log(util.inspect(params));

console.log(‘向client返回‘);

res.end(params.query.name);

}).listen(3000);

http.get({

‘host‘:‘localhost‘,

path:‘/user?name=octopus&age=20‘,

port:3000},

function(res){

res.setEncoding(‘utf-8‘);

res.on(‘data‘,function(data){

console.log(‘服务端响应回来的数据为:‘+data);

})

});

二、http.ClientRequest

该对象是由http.request或http.get返回产生的对象,表示一个已经产生并且正在进行的HTTP请求,它提供了response事件,

即http。request或http.get第二个參数制定的回调函数的绑定对象,请求必须调用end方法结束请求。

提供的函数:

request.abort() 终止正在发送的请求

request.setTimeout(timeout,[callback]) 设置请求超时时间,timeout为毫秒数,当请求超时后,callback将会被调用

其他:request.setNoDelay([noDelay])、request.setScoketKeepAlive([enable],[initialDelay])等函数。

API地址:http://nodejs.org/api/http.html

三、http.ClientResponse

http.ClientReponse是与http.ServerResponse相似,提供三个事件,data、end和close,分别在数据到达,传输结束和连接结束时触发,

当中data事件传递一个參数chunk,表示接受到的数据

属性,表示请求的结果状态

statusCode   HTTP状态码,如200,404,500

httpVersion:HTTP协议版本号

headers:HTTP请求头

trailers:HTTP请求尾

函数:

response.setEncoding([encoding]):设置默认的编码,当data事件被触发时,数据将以encoding编码。默认值为null,以buffer的形式存储。

response.pause():暂停接受数据和发送事件,方便实现下载功能。

response.resume():以暂停的状态中恢复

node.js第11课(HTTPclient)

时间: 2024-10-24 22:50:00

node.js第11课(HTTPclient)的相关文章

node.js第十课(HTTPserver)

 概念:Node.js提供了http模块.当中封装了一个高效的HTTPserver和一个简单的HTTPclient. http.server是一个基于事件的HTTP服务器.内部用C++实现.接口由JavaScript封装. http.request则是一个HTTPclient工具.用户向server发送请求. 一.HTTPserver http.Server实现的,它提供了一套封装级别非常低的API,不过流控制和简单的解析,全部的高层功能都须要通过它的接口 前面解说的app.js案例 代码分

Node.js 爬虫,自动化抓取文章标题和正文

持续进行中... 目标: 动态User-Agent模拟浏览器 √ 支持Proxy设置,避免被服务器端拒绝 √ 支持多核模式,发挥多核CPU性能 √ 支持核内并发模式 √ 自动解码非英文站点,避免乱码出现 √ 自动队列管理,持续化PUSH √ 自动抓取文章标题和正文 √ 性能优化 测试用例,自动化测试 我的测试环境: 9 台安装 ElasticSearch 1.3.2 的 centos,48G内存,8核 3 台 Node.js v0.11.14 的 centos,16G内存,8核,用作爬虫 3 台

【译】 Node.js v0.12的新特性 -- Cluster模式采用Round-Robin负载均衡

原文:https://strongloop.com/strongblog/whats-new-in-node-js-v0-12-cluster-round-robin-load-balancing Node.js v0.12的新特性 -- Cluster采用轮询调度算法来进行负载均衡 November 19, 2013 by Ben Noordhuis 欢迎来到由Node的核心提交者 Ben Noordhuis 和 Bert Belder撰写的系列博文的第一篇.本系列可能由7-8篇构成,主要涵盖

准备:新V8即将到来,Node.js的性能正在改变

V8的Turbofan的性能特点将如何对我们优化的方式产生影响 审阅:来自V8团队的Franziska Hinkelmann和Benedikt Meurer. **更新:Node.js 8.3.0已经发布了V8 6.0和Turbofan. Node.js依靠V8 JavaScript引擎来运行代码,其语言本身也是我们熟悉和喜爱的.V8 JavaScript引擎是Google为Chrome浏览器编写的JavaScript虚拟机.从一开始,V8的一个主要目标是让JavaScript运行地更快,或者至

程序员的复仇:11行代码如何让Node.js社区鸡飞狗跳

来源自:http://www.techug.com/node-js-community 几天前,一名 NPM(Node.js Package Manager)社区的贡献者 Azer Koçulu 出于对 NPM 管理层的怨愤,不声不响删除了自己在 NPM 上面的全部代码,其中就包含只有 11 行代码的“Left-pad”,没想到从中国北京到美国硅谷,从大学宿舍学习 Node.js 的新手到 Facebook 的资深工程师,整个互联网界都炸开了锅,他们手中的许多 Node.js 模块,全罢工了.

web2.0课上的node.js

X signin作业上一周web作业为用node.js设计一个本地网站用于用户注册提交,并且有校验功能和去重检查.头疼了几天后可算弄出来了.首先,听从老师的建议看api,网址为:?https://nodejs.org/api/,看了后发现自己一头雾水,干脆还是边做边想吧,首先根据这个网址(http://www.sitepoint.com/creating-a-http-server-in-node-js/)上那个经典的写到烂的样例创建一个服务器,接下来打开浏览器浏览localhost:8000(

node.js 11 Web框架Express 介绍,安装,静态页面,路由

本文参考原文-http://bjbsair.com/2020-03-22/tech-info/2815/前面介绍了node.js的文件模块,http server以及静态网站的创建.有了这些知识作为基础,我们可以了解一下node.js的Web框架了. 从Java一路过来的朋友可能觉得Web框架还是比较重量级的,比如最初的Struts到后来的Spring,中间Apache组织也有过一些其他的模板框架,总体而言无论是从使用还是学习来讲,都是需要花费较多时间的.对于大型应用而言,这个投入是值得的.如果

面向Web Cloud的HTML5 App开发实战:Browser&HTML5&CSS3&PhoneGap&jQuery Mobile& WebSocket&Node.js(2天)

如何理解Android架构设计的初心并开发出搭载Android系统并且具备深度定制和软硬整合能力特色产品,是本课程解决的问题. 课程以Android的五大核心:HAL.Binder.Native Service.Android Service(并以AMS和WMS为例).View System为主轴,一次性彻底掌握Android的精髓. 之所以是开发Android产品的必修课,缘起于: 1,     HAL是Android Framework&Application与底层硬件整合的关键技术和必修技

node.js零基础详细教程(7):node.js操作mongodb,及操作方法的封装

第七章 建议学习时间4小时  课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑.编写接口,最后完成一个完整的项目后台,预计共10天课程. node.js操作mangodb 创建一个用于放置今天文件的文件夹,npm init初始化一下,并创建demo1.js用于写node代码 使用 npm install mongodb,将mongodb控制模块安装到本地 在demo1.js中写