使用Node来实现简单的HTTP响应请求

简单的HTTP响应请求

1. 引入http模块

1
2
const http = require('http');

2.创建 server

1
2
const server = http.createServer();

3. 当客户端请求过来,就会自动触发服务器的 request 请求事件, 然后执行第二个参数:回调函数

  • request 请求事件处理函数 需要接受俩个参数:
  • request 请求对象:请求对象可以用来获取客户端的一些请求信息,例如请求路径
  • response 响应对象 :响应对象可以用来给客户端发送响应信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server.on('request', (req, res) => {
console.log('收到了客户端的请求了,请求路径是:' + req.url);
// 要根据不同的请求立即发送不同的响应结果
// 1. 获取请求路径
const url = req.url;
// req.url 获得到的是端口号之后的那一部分路径
// 也就是说 所有的 url 都是以 / 开头的

// 2. 判断路径来处理响应
if (url == '/') {
res.end('index page');
} else if (url == '/login') {
res.end('login page');
} else {
res.end('404 Not found.')
}
});


不推荐使用 wirte 因为end的参数就可以接受,并且开发中基本都是一对一的响应

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    // response 对象有一个方法: write 可以用来给客户端发送响应数据
// write 可以使用多次 ,但是最后一次一定要使用 end 来结束响应, 否则客户端会一直等待
if (req.url == '/') {
res.write('heelo');
res.write(' nonejs');

} else if (req.url == '/login') {
res.write('login');

} else if (req.url == '/index') {
res.write('index');
}
res.end();

// 以上的代码方式比较麻烦, 推荐使用直接 end 的同时 加请求信息
// res.end('hello nodejs');

以下例子证明了 响应内容只能是 字符串 和 二进制 。 对象,数组,布尔值,数值等等都是不行的
1
2
3
4
5
6
7
8
9
10
if (url == '/products') {
let products = [{
name: '苹果',
price: 5
}, {
name: '香蕉',
price: 3
}];
res.end(JSON.stringify(products));
};