码迷,mamicode.com
首页 > Web开发 > 详细

nodejs之HTTP模块学习

时间:2016-09-05 12:18:11      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

nodejs中的http模块封装了一个http服务器模块和一个简易的http客户端。

http.Server是一个基于事件的http服务器

http.request是http客户端工具,用于向http服务器发起请求

 

而http.createServer方法中的函数参数req和res分别代表请求对象和响应对象。

req是http.incomingMessage的实例

res是http.ServerResponse的实例

一、http服务器

1).http.Server

  http.Server是一个基于事件的服务器,继承自EventEmitter,提供如下事件:

request:当客户端请求到来时,该事件被触发,提供两个参数res和req,表示响应信息和请求信息,是最常用的事件

connection:当TCP连接建立时,该事件被触发,提供一个socket参数,是net.Socket的实例

close:当服务器关闭时,触发事件

 

 

2).http.incomingMessage

  是HTTP请求的信息,一般由http.Server的request事件发送,并作为第一个参数传递,http请求一般可以分为两部分:请求头和请求体,并提供如下三个事件

1.data:当请求体数据到来时,该事件被触发,提供一个参数chunk,表示接受的数据,如果该事件没有被监听,则请求体会被抛弃,该事件有可能会被多次调用

2.end:当请求体数据传输完毕时,该事件会被触发,,此后不会再有数据

3.close:当用户请求结束时,该事件被触发,不同于end,如果强制终止传输,也会触发close

 

3).http.ServerResponse

  是返回给客户端的信息,决定了用户最终看到的信息,一般由http.Server的request事件发送,并作为第二个参数传递,他有三个重要的成员函数,用于返回响应头,响应内容及结束请求。

res.writeHead(statusCode,[heasers]):向请求的的客户端发送响应头,该函数在一个请求中最多调用一次,如果不调用,则会自动生成一个响应头

res.write(data,[encoding]):向请求的客户端发送响应内容,data是一个buffer或者字符串,如果data是字符串,这需要定制编码方式,默认为"utf-8",在res.end调用之前可以多次调用

res.end([data],[encoding]):结束响应,告知客户端所有发送已经结束,当所有要返回的内容发送完毕时,该函数必须被调用一次,两个可选参数与res.write()相同

 

二、http客户端

1.http.request(options,callback)

  options是一个类似关联数组的对象,表示请求的参数,callback作为回调函数,需要传递一个参数,为http.ClientResponse的实例,http.request返回一个http.ClientRequest的实例

2.http.get(options, callback)

  是http.request的简化版

3.http.ClientRequest

  http.ClientRequest是由http.request或http.get返回产生的对象,表示一个已经产生且正在进行中的HTTP请求,提供一个response事件,就是我们使用http.get和http.request方法中的回调函数所绑定的对象。

4.http.ClientResponse

  与http.ServerRequest类似

nodejs之HTTP模块学习

标签:

原文地址:http://www.cnblogs.com/sturrbon/p/5840899.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!