nodejs 用http模块搭建的服务器的路由

我们打开浏览器浏览网页时,点击上面不同的模块,地址栏中的路由会发生相应的变化,从而,浏览器向服务器发起请求的内容也会发生改变,那么服务端,是如何来做的呢?

服务端也是,通过路由来做出不同的响应的,我们已经知道,服务器对象的参数有request,和response两个参数。request里就携带了,浏览器请求所携带的值。

request.url返回的是浏览器中路由的值

我们可以根据这个值来判断,服务器需要返回给浏览器什么内容,

下面来看一下server.js的代码:

var http = require("http");
var fs = require("fs");

var startServer = function(){
    var onRequest = function(request,response){
        console.log("request received"+request.url);
        if(request.url==="/"||request.url==="/home"){
            response.writeHead(200,{"Content-Type":"text/html"});
            fs.createReadStream(__dirname+"/index.html","utf8").pipe(response);
        }else if(request.url==="/review"){
            response.writeHead(200,{"Content-Type":"text/html"});
            fs.createReadStream(__dirname+"/review.html","utf8").pipe(response);
        }else if(request.url==="/api"){
            response.writeHead(200,{"Content-Type":"application/json"});
            var jsonObj={name:"lili",job:"coder",age:18};
            response.end(JSON.stringify(jsonObj));
        }else{
            response.writeHead(200,{"Content-Type":"text/html"});
            fs.createReadStream(__dirname+"/404.html","utf8").pipe(response);
        }
        
    }

    var server = http.createServer(onRequest);
    //最后让服务器监听一个端口
    server.listen(3000,"127.0.0.1");//还可以加第二个参数 127.0.0.1代表的是本地

    console.log("server started on localhost port 3000");//加一个服务器启动起来的提示
}

module.exports.startServer=startServer;

上面server.js中,根据不同的路由,让服务器返回给浏览器不同的内容,当找不到内容时,返回一个404页面

把server.js引入到app.js中

var server = require("./server");

server.startServer();

执行node app

在浏览器中 localhost:3000

后面跟上不同的路由,会显示不同的页面,当匹配不到路由时,会显示404页面!!!

猜你喜欢

转载自www.cnblogs.com/fqh123/p/11257078.html