Node Http模块

在这里插入图片描述

Node Http模块

我们可以使用 Node 创建一个服务器,在 Node 中专门提供了一个核心模块:http

http 这个模块的职责,就是帮助我们创建编写服务器的

1、加载http核心模块

var http = require('http');

2、使用http.createServer()方法创建了一个web服务器,返回一个Server实例

var server = http.createServer();

3、服务器要干什么?

  • 提供服务:对数据的服务
  • 发请求
  • 接收请求
  • 给个反馈 (发送响应)

4、简单web服务器

http.server 是一个基于事件的 HTTP 服务器,所有的请求都被封装到独立的事件当中。

let http = require('http');
//创建web服务器,提供服务,处理客户端的请求
//普通方式监听
let server =  http.createServer((req,res)=>{
    //req客户端请求的相关信息,res返回响应信息
    let url = req.url;
    //解决中文乱码
    res.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'});
    res.end('访问路径:'+url);
}).listen(9000);
//request事件监听
/*server.on('request', (req, res) => {
    console.log(req.url);
    //设置应答头信息
    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.write('HHHHH<br>');
});
server.listen(9000);*/
//当TCP建立连接的时候,该事件被触发,提供了一个参数socket,为net.socket的实例(底层协议对象)
server.on('connection',(req,socket,head)=>{
    console.log('有连接');
});

在浏览器通过http://localhost:9000/即可访问:
在这里插入图片描述
5、http.ServerRequset

  http 请求分为请求头和请求体,如果请求的内容少的话就直接在请求头协议完成之后立即读取,请求体可能相对较长一点,需要一定的时间传输。因此提供了三个事件用于控制请求体传输:

  1. data:当请求体数据到来时,该事件被触发,该事件一共一个参数chunk,表示接受到的数据。
  2. end:当请求体数据传输完成时,该事件被触发,此后将不会再有数据到来。
  3. close:用户当前请求结束时,该事件被触发,不同于 end,如果用户强制终止了传输,也会触发 close。

serverRequest常用信息:

let http = require('http');
let server =  http.createServer((req,res)=>{
    //客户端请求是否发送完成
    console.log(req.complete);
    //http协议版本
    console.log(req.httpVersion);
    //connnection
    console.log(req.socket);
    //http请求头
    console.log(req.headers);
    //http请求方法
    console.log(req.method);
    res.writeHead(200,{'Content-Type':'text/plain'});
    res.write("hahahaha");
    res.end();
}).listen(9000);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章