路径分发
这个我都会在代码中进行讲解,直接看代码吧
我们先来看看req对象
let http = require('http');
let server = http.createServer();
server.on('request', (req, res) => {
// req对象其实就是http.IncomingMessag类的实例
// 这个类中有个message.url属性
// 通过这个属性就可以获取到用户请求的路径
res.writeHead(200, {
"Content-Type": "text/plain;charset=utf-8"
})
res.end('仙蒂');
console.log(req.url);
})
server.listen(666);
拿到路径,是不是可以判断一下这个路径是什么,然后返回到对应的路径就可以了
let http = require('http');
let server = http.createServer();
server.on('request', (req, res) => {
// req对象其实就是http.IncomingMessag类的实例
// 这个类中有个message.url属性
// 通过这个属性就可以获取到用户请求的路径
// 来打印看看能不能拿到
res.writeHead(200, {
"Content-Type": "text/plain;charset=utf-8"
})
// startsWith: 用于检查字符串是否是以指定子字符串开头
if (req.url.startsWith('/index')) {
res.end('我是首页界面');
} else if (req.url.startsWith('/login')) {
res.end('我是登录界面');
} else {
res.end('没有数据');
}
})
server.listen(666);
紧接着来看看res对象
res对象其实就是http.ServerResponse 类的实例
http.ServerResponse类中也也有write方法和res对象大致一样
还是有一点区别
区别: 如果通过end方法返回数据,只会返回一次
let http = require('http');
let server = http.createServer();
server.on('request', (req, res) => {
res.writeHead(200, {
"Content-Type": "text/plain;charset=utf-8"
})
if (req.url.startsWith('/index')) {
res.end('我是首页界面1');
res.end('我是首页界面2');
} else if (req.url.startsWith('/login')) {
res.end('我是登录界面');
} else {
res.end('没有数据');
}
})
server.listen(666);
那试试write行不行
let http = require('http');
let server = http.createServer();
server.on('request', (req, res) => {
res.writeHead(200, {
"Content-Type": "text/plain;charset=utf-8"
})
if (req.url.startsWith('/index')) {
res.write('我是首页界面1');
res.write('我是首页界面2');
} else if (req.url.startsWith('/login')) {
res.end('我是登录界面');
} else {
res.end('没有数据');
}
})
server.listen(666);
诶?网页是不是一直在转?无法响应
为什么?
因为write只能返回数据,end是不是既可以结束请求又可以返回数据
如果返回多次数据,是不是在后面加上end方法就可以了
let http = require('http');
let server = http.createServer();
server.on('request', (req, res) => {
res.writeHead(200, {
"Content-Type": "text/plain;charset=utf-8"
})
if (req.url.startsWith('/index')) {
res.write('我是首页界面1');
res.write('我是首页界面2');
res.end();
} else if (req.url.startsWith('/login')) {
res.end('我是登录界面');
} else {
res.end('没有数据');
}
})
server.listen(666);
是不是就没有任何的问题