上一节笔记中,request事件是所有请求都会触发的,并不能做到针对特定的请求响应不同的数据。
如果要根据不同请求路径返回不同数据:
1、对request.url进行判断
// 加载 http 核心模块
var http = require('http');
//1. 使用 http.createServer() 方法创建一个 web 服务器
var server = http.createServer();
//2. 监听 request 请求事件,设置请求处理函数
server.on('request',function(req,res){
console.log('收到了客户端的请求,请求路径是:' + req.url);
})
//3. 绑定端口号,启动服务器
server.listen(3000,function(){
console.log('服务器启动成功了,可以通过访问了。。。。');
})
可以正常运行
server.on('request',function(req,res){
res.write('hello')
res.write(' node.js')
res.end();
})
上面的方式比较麻烦,推荐使用更加简单的方法,直接 end 的同时发送响应数据。
server.on('request',function(req,res){
res.end('hello node.js');
})
可以根据不同的请求路径发送不同的响应结果。
server.on('request',function(req,res){
var url = req.url;
res.end(url)
})
拿到输入的路径,当输入什么时,就会显示什么
req.url 获取到的是端口号之后的那一部分路径,也就是说,所有的 url 都是已 / 开头的。
接下来,对传入的不同数据,判断返回不同的结果。
server.on(‘request’,function(req,res){
server.on('request',function(req,res){
var url = req.url;
if(url === '/'){
res.end('index page');
}else if(url ==='/login'){
res.end('login page');
}else{
res.end('Not Found');
}
})
当输入 /login
当输入的数不在判断条件时
创建一个数组,让其打印出数据:
server.on('request',function(req,res){
var url = req.url;
if(url === '/produs'){
var prous = [
{
name : '苹果 X',
price : 4500
},
{
name : '华为 P40',
price : 5000
},
{
name : '苹果11 pro',
price : 9888
}
]
res.end(123); //会报错
}
})
会报错;响应的内容只能是二进制数据或者是字符串 例如: 数字,对象,数组,布尔值。
所有得变成 json 数据的格式
res.end(JSON.stringify(prous));
这样就能正常的输出数据了。