美文网首页
【翻译】Node.js 教程 —— 基础路由

【翻译】Node.js 教程 —— 基础路由

作者: kyuan | 来源:发表于2018-12-26 22:55 被阅读8次

    我们编写了如下的服务器代码,当我们发送请求到服务器端,服务器端会返回 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/api127.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 来设置路由。

    相关文章

      网友评论

          本文标题:【翻译】Node.js 教程 —— 基础路由

          本文链接:https://www.haomeiwen.com/subject/zfkhlqtx.html