我们编写了如下的服务器代码,当我们发送请求到服务器端,服务器端会返回 feed me popcorn,在浏览器端打开 127.0.0.1:8888
就会看到结果。
'app.js`'
var http = require('http');
var server = http.createServer(function(req, res){
console.log('request was made' + req.url);
res.writeHead(200, {
'Content-Type': 'text/plain'
});
res.end('feed me popcorn');
});
server.listen(8888, '127.0.0.1'); // 监听本机上的 8888 端口
console.log('server is listening 8888');
在浏览器地址栏上无论我输入哪个 url,比如 127.0.0.1:8888/api
或 127.0.0.1:8888/home
都会返回 feed me popcorn,
实际应用中需要通过请求并发送数据到不同 url,然后让服务端程序响应对应的数据,如访问 127.0.0.1:8888/home
返回主页,
访问 127.0.0.1:8888/contact
返回联系我们页面。
因此我们需要在这里设置路由,如果你有注意到 req.url
,我们可以通过这个知道客户端当前请求的 url 是什么,就可以根据这个来做路由设置。
如果客户端请求 127.0.0.1:8888/
或者 127.0.0.1:8888//home
则返回 index.html
'app.js`'
var http = require('http');
var server = http.createServer(function(req, res){
if(req.url === '/' || req.url === '/home'){
var readStream = fs.createReadStream(__dirname + '/index.html', 'utf-8');
res.writeHead(200, {
'Content-Type': 'text/html'
});
readStream.pipe(res); // 管道方式发送 html 内容到客户端
}
});
server.listen(8888, '127.0.0.1'); // 监听本机上的 8888 端口
console.log('server is listening 8888');
但上述代码如果客户端请求 127.0.0.1:8888/contact
即非 /
和 /home
,则服务器不会有任何响应,客户端会一直处于等待响应状态,因为程序上没有任何响应的动作。
额外添加路由进行处理,只要非 /
和 /home
则返回 404 页面。
'app.js`'
var http = require('http');
var server = http.createServer(function(req, res){
if(req.url === '/' || req.url === '/home'){
var readStream = fs.createReadStream(__dirname + '/index.html', 'utf-8');
res.writeHead(200, {
'Content-Type': 'text/html'
});
readStream.pipe(res); // 管道方式发送 html 内容到客户端
} else {
var readStream = fs.createReadStream(__dirname + '/404.html', 'utf-8');
res.writeHead(404, {
'Content-Type': 'text/html'
});
readStream.pipe(res); // 管道方式发送 html 内容到客户端
}
});
server.listen(8888, '127.0.0.1'); // 监听本机上的 8888 端口
console.log('server is listening 8888');
这样设置路由会变得很复杂,之后的课程我们会学习 express 来设置路由。
网友评论