上一次讲到了怎么解决 HTML 显示乱码的问题。
这是上次内容的链接:Node.js 服务器编码问题
今天我们添加一个新功能,可以根据不同的链接地址返回不同的页面响应。
启动上次的代码,代码如下:
// 创建一个简单的的 http 服务器程序
// 加载 http 模块
var http = require('http');
// 创建 http 服务对象
var server = http.createServer();
// 监听用户请求事件( request 事件)
// request 对象包含了用户请求报文中的所有内容 ,通过 request 对象可以获取所有用户提交过来后的数据
// response 对象用来向用户响应一些数据,当服务器要向客户端响应数据的时候必须使用 response 对象
server.on('request', function (request, response) {
// 设置 response 返回数据类型与编码格式,否则浏览器会报错
// Content-Type 设置数据类型
response.setHeader('Content-Type', 'text/plain; charset=utf-8');
// 向客户端(浏览器)返回数据
response.write('Hello Word,你好!');
// 返回数据的时候要结束,不然就会一直请求
response.end();
})
// 启动服务
server.listen(8080, function () {
console.log('OK,访问:localhost:8080');
})
会发现,无论在链接后面添加什么参数,页面也总是只显示 Hello Word,你好!
。
怎样才能实现修改地址访问不同的页面呢?在监听用户请求事件中,我们有一个参数 request
。
// 监听用户请求事件( request 事件)
// request 对象包含了用户请求报文中的所有内容 ,通过 request 对象可以获取所有用户提交过来后的数据
// response 对象用来向用户响应一些数据,当服务器要向客户端响应数据的时候必须使用 response 对象
server.on('request', function (request, response) {
...
})
就是上面代码中的第一个参数,它有一个特别的方法可以得到我们输入浏览器中的地址 --- request.url
。可以通过判断地址的不同设置不同的结果。
我们先把监听用户请求事件里面的代码全部删掉,写上新的代码,如下:
server.on('request', function (request, response) {
// 设置 response 返回数据类型与编码格式,否则浏览器会报错
// Content-Type 设置数据类型
response.setHeader('Content-Type', 'text/plain; charset=utf-8');
// 如果链接的路径是 / 或者 /index 时,返回的页面的 index 页面
if (request.url === '/' || request.url === '/index') {
// response.write('这是 index 页面');
// response.end();
// response.end('这是 index 页面'); 上面两句的简写
response.end('这是 index 页面');
}
// 如果链接的路径是 /login 时,返回的页面的 login 页面
else if (request.url === '/login') {
response.end('这是 login 页面');
}
// 如果链接的路径是 /register 时,返回的页面的 register 页面
else if (request.url === '/register') {
response.end('这是 register 页面');
}
// 如果链接的路径都不是上面定义的路径,返回 404 没有此页面
else {
response.end('404,没有找到此页面。');
}
})
这样我们就可以通过不同的路径访问不同的页面了。
当我们访问 localhost:8080/
和 localhost:8080/index
的时候,是这样的:
访问 localhost:8080/login
就会返回 login
页面:
这是 register
页面:
没有找到对应的页面,就会返回我们刚刚设置好的 404 页面:
网友评论