nodejs模块_3_http

本文详细介绍了HTTP协议的工作原理,包括通用头信息、响应头信息、请求头信息及请求主体等内容。同时,深入探讨了Node.js中的HTTP模块如何模拟浏览器发送请求及创建web服务器。

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();

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值