0%

Node.js-http模块

Node.js-http模块

服务器相关的概念

IP地址:IP地址是互联网上的一个唯一标识,一台电脑的IP地址可以在互联网上被其他电脑访问到。

互联网中每台web服务器,都有自己的IP地址

域名和域名服务器:

端口号:

创建web服务器的基本步骤:

1.导入http模块

2.创建web服务器实例

3.为服务器实例绑定request事件,监听客户端的请求。

4.创建服务器

req请求对象:

只要服务器接收到客户端的请求,就会调用通过server.on()为服务器绑定的request事件处理函数

如果想在事件处理函数中,访问与客户端相关的数据和属性,可以使用如下的方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server.on("request",(req,res)=>{
//第一个参数是事件的名称,第二个参数是一个回调函数,当事件触发时,会执行回调函数。
console.log("Someone visvit the server!");
//req是请求对象,它包含了与客户端相关的数据和属性,例如:
//req.url:客户端请求的url地址
//req.method:客户端请求的method请求类型
//req.headers:客户端请求的headers头信息
//req.httpVersion:客户端请求的http版本
//req.socket:客户端请求的socket对象
//req.connection:客户端请求的connection对象
const url = req.url;
const method = req.method;
const str = `Your request url is ${url} and method is ${method}`;
console.log(str);

});

res响应对象:

在服务器的request事件处理函数中,如果想访问与服务器相关的数据或属性,可以使用如下方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
server.on("request",(req,res)=>{
//第一个参数是事件的名称,第二个参数是一个回调函数,当事件触发时,会执行回调函数。
console.log("Someone visvit the server!");
//req是请求对象,它包含了与客户端相关的数据和属性,例如:
//req.url:客户端请求的url地址
//req.method:客户端请求的method请求类型
//req.headers:客户端请求的headers头信息
//req.httpVersion:客户端请求的http版本
//req.socket:客户端请求的socket对象
//req.connection:客户端请求的connection对象
const url = req.url;
const method = req.method;
const str = `Your request url is ${url} and method is ${method}`;
console.log(str);

//res是响应对象,它包含了与客户端相关的数据和属性,例如:
//res.statusCode:响应状态码
//res.statusMessage:响应状态信息
//res.setHeader():设置响应头
//res.write():向客户端发送响应内容
//res.end():结束响应
//调用res.end()方法,可以向客户端发送响应内容。
res.end(str);

});

解决中文乱码问题

当调用res.end()方法,向客户端发送中文内容的时候,会出现中文乱码问题,此时,需要手动设置内容的编码格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
server.on("request",(req,res)=>{
//第一个参数是事件的名称,第二个参数是一个回调函数,当事件触发时,会执行回调函数。
console.log("Someone visvit the server!");
//req是请求对象,它包含了与客户端相关的数据和属性,例如:
//req.url:客户端请求的url地址
//req.method:客户端请求的method请求类型
//req.headers:客户端请求的headers头信息
//req.httpVersion:客户端请求的http版本
//req.socket:客户端请求的socket对象
//req.connection:客户端请求的connection对象
const url = req.url;
const method = req.method;
const str = `你请求的url地址是 ${url},请求的method类型是 ${method}`;
//为防止中文乱码,需要设置编码格式,需要设置Content-Type的值为text/html,characterEncoding的值为utf-8
res.setHeader("Content-Type","text/html;charset=utf-8");
//把包含中文的内容,响应给客户端

//res是响应对象,它包含了与客户端相关的数据和属性,例如:
//res.statusCode:响应状态码
//res.statusMessage:响应状态信息
//res.setHeader():设置响应头
//res.write():向客户端发送响应内容
//res.end():结束响应
//调用res.end()方法,可以向客户端发送响应内容。
res.end(str);

});

根据不同的url地址响应不同的html内容

核心步骤:

1.获取请求的url地址

2.设置默认的响应内容为404 Not Found

3.判断用户请求的是为/或/indexhtml首页

4.判断用户请求是否为/或about.html关于页面

5.设置Content-Type响应头,防止中文乱码

6.使用res.end把内容响应给客户端

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const http = require("http");

const server = http.createServer();

server.on("request",(req,res)=>{
// 1.获取请求的url地址
const url = req.url;
// 2.设置默认的响应内容为404 Not Found
let responseText = "404 Not Found";
// 3.判断用户请求的是为/或/indexhtml首页

// 4.判断用户请求是否为/或about.html关于页面
if(url === "/" || url === "/index.html"){
responseText = "<h1>这是首页</h1>";
}else if(url === "/about.html"){
responseText = "<h1>这是关于页面</h1>";
}
// 5.设置Content-Type响应头,防止中文乱码
res.setHeader("Content-Type","text/html;charset=utf-8");
// 6.使用res.end把内容响应给客户端
res.end(responseText);
});
//启动服务器
//使用http.Server实例的listen()方法,启动服务器。
server.listen(8080,() => {
console.log("Http serve running at http://127.0.0.1:8080");
})