3.7 http模块
1. http协议
http协议:是浏览器与web服务器之间的通信协议
(1)通用头信息(General)
Request URL:请求的URL,对应浏览器地址栏内容,要向服务器获取哪些内容
Request Method:请求的方法,GET/POST/PUT....获取内容的方式
Status Code:响应的状态码,可以查看响应的结果
1**:正在请求,没有结束
2**:成功的响应
3**:响应重定向,跳转到另外一个URL;通常结合响应头信息中的Location一起使用
4**:客户端错误
5**:服务器端错误
Remote Address:请求的服务器的IP地址和端口号
(2)响应头信息(ResponseHeaders)
Connection:连接方式,keep-alive 持续连接
Content-Type:响应的文件类型
Content-Length:响应的文件长度
Transfer-Encoding:传输方式,chuncked 分段传输
Content-Encoding:压缩模式 gzip
Location:当响应重定向的时候,跳转的URL
(3)请求头信息(RequestHeaders)
Accept:客户端接收文件类型
Accept-Encoding:客户端接收的文件压缩形式
User-Agent:客户端发送请求使用的浏览器
(4)请求主体
可有可无,客户端向服务器端传送数据
2.http模块
http模块,既可以模拟浏览器向web服务器发送请求,也可以创建web服务器9
(1)模拟浏览器
http.get(url,callback)
get 请求的方法
callback 回调函数,用于获取服务器端的响应
res 响应的对象
statusCode 响应的状态码
res.on('data',function(buf){ ..... })
通过事件获取服务器端的响应,当有数据传输的时候自动触发通过回调函数来接收数据,buf是传输的数据,格式为buffer
//使用http模块下的get方法,向http://www.tmooc.com发送请求,并获取响应的数据 http.get('http://www.tmooc.cn',function(res){ console.log(res.statusCode); res.on('data',function(buf){ console.log(buf.toString()); }) }); |
(2)创建web服务器
var server=http.createServer() //创建web服务器
server.listen(8080) //设置web服务器端口号,监听端口变化
server.on('request',function(req,res){ .... })
接收浏览器的请求,是一个事件,当有请求发生自动触发
req 请求的对象
url 请求的URL,显示端口后的部分
method 请求的方法
res 响应的对象
writeHead(code,obj) 设置响应的状态码和头信息
code 状态 obj 是一个头信息(用对象表示)
write() 设置浏览器中响应的内容
end() 结束响应,发送响应的内容到浏览器
//创建web服务器,引入模块,设置web服务器的端口号,监听端口的变化 const http=require('http'); var server=http.createServer(); server.listen(8080); //接收浏览器的请求,是一个事件,当有请求自动触发 通过回调函数来获取请求和做出响应 //参数1 request 事件名称(请求)参数2 通过回调函数获取请求和做出响应 server.on('request',function(req,res){ //req:请求的对象 请求的url,method console.log(req.url,req.method); //res:响应的对象,writeHead()设置响应的状态码和头信息 // res.writeHead(200,{ // Server:'xp2000' }); //设置响应状态吗为302,跳转到学子商场 res.writeHead(302,{ Location:'http://www.codeboy.com'}) //设置浏览器中响应的内容 // res.write('this is null homepage'); //结束响应,发送响应的内容到浏览器 res.end(); }); |
//练习:当请求的url为/login,响应一句话‘login’,当请求的url为/study,跳转到http://www.tmooc.cn if判断请求的url值 const http=require('http'); const server=http.createServer(); server.listen(8080); server.on('request',function(req,res){ if(req.url=='/login'){ res.write('login'); }else if(req.url=='/study'){ res.writeHead(302,{ Location:'http://www.tmooc.cn' }); } res.end(); }); |