nodejs之HTTP模块学习

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类似

时间: 2024-11-08 04:09:12

nodejs之HTTP模块学习的相关文章

大熊君大话NodeJS之------Net模块

一,开篇分析 从今天开始,我们来深入具体的模块学习,这篇文章是这个系列(大熊君大话NodeJS)文章的第三篇,前两篇主要是以理论为主,相信大家在前两篇的学习中, 对NodeJS也有一个基本的认识,没事!!!趁热打铁,让我们继续将NodeJS进行到底,好了废话不多说,直接进入今天的主题 “Net模块” ,那么”Net“应该如何理解那? 它是做什么用的那?(Net模块可用于创建Socket服务器或Socket客户端. NodeJS 的数据通信,最基础的两个模块是 Net 和 Http,前者是基于 T

Python 模块学习

模块学习: http://wsyht90.blog.51cto.com/9014030/1845737 1.getpass 2.os 3.sys 4.subprocess 5.hashlib 6.json 7.pickle 8.shutil 9.time 10.datetime 11.re 12.random 13.configparser 14.traceback 15.yaml 16.itertools 17.logging 18.urllib.urllib2 19.paramiko ###

python模块学习(2)——re模块

正则表达式并不是python的一部分,正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同:但不用担心,不被支持的语法通常是不常用的部分.如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了. 下图展示了使用正则表达式进行匹配的流程:  正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符

nodejs的require模块及路径

在nodejs中,模块大概可以分为核心模块和文件模块. 核心模块是被编译成二进制代码,引用的时候只需require表示符即可,如(require('net')). 文件模块,则是指js文件.json文件或者是.node文件.在引用文件模块的时候后要加上文件的路径:/-/-/xxx.js表示绝对路径../xxx.js表示相对路径(同一文件夹下的xxx.js),../表示上一级目录.如果既不加/-/.../又不加./的话,则该模块要么是核心模块,要么是从一个node_modules文件夹加载. 对于

Node.js笔记(0003)---Express框架Router模块学习笔记

这段时间一直有在看Express框架的API,最近刚看到Router,以下是我认为需要注意的地方: Router模块中有一个param方法,刚开始看得有点模糊,官网大概是这么描述的: Map logic to route parameters. 大概意思就是路由参数的映射逻辑 这个可能一时半会也不明白其作用,尤其是不知道get和param的执行顺序 再看看源码里面的介绍: Map the given param placeholder `name`(s) to the given callbac

如何编写package.json配置NodeJS项目的模块声明

在NodeJS项目中,用package.json文件来声明项目中使用的模块,这样在新的环境部署时,只要在package.json文件所在的目录执行 npm install 命令即可安装所需要的模块. package.json文件中可配置的项有:名称(name).应用描述(description).版本号(version).应用的配置项(config).作者(author).资源仓库地址(repository).授权方式(licenses).目录(directories).应用入口文件(main)

openoffice osl模块学习1

由" can i get a char* , please?"看起: Just barely. OO.o has at least six string wrappers, although the C implementations are of little interest: rtl_String - sal/inc/rtl/string.h"Normal" string plus reference counting. rtlstring->buffe

Day5 - Python基础5 常用模块学习

Python 之路 Day5 - 常用模块学习 本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,

python之web模块学习-- urllib

准备写一些列的 python之web模块学习,基本上涉及常用的的web模块,包括 urllib.urllib2.httplib.urlparse.requests,现在,开始我们的第一个模块的学习吧. 1  urllib简介 python urllib 模块提供了一个从指定的URL地址获取网页数据,然后对其进行分析处理,获取我们想要的数据. 2  常用方法 2.1  urlopen  -- 创建一个类文件对象 为读取指定的URL help(urllib.urlopen) urlopen(url,