不积跬步,无以至千里;不积小流,无以成江海。

Node.js-解析URL实现访问路由

Node.js 康康 1351℃ 0评论

一、使用http模块创建一个http服务

通过request对象解析url地址,截取参数,实现不同的请求执行不同的方法

server.js 内容:

var http = require("http");
var url = require("url");
var route = require("./route");  //导入我们自己写的route模块
//创建一个Http服务
http.createServer(function (request,response) {
    var reqUrl = request.url; //获取请求url
    if(reqUrl!="/favicon.ico"){
        console.log("收到请求 : "+request.url);
        //解析路径 进行路由
        var path = (url.parse(reqUrl).pathname).replace(/\//,""); 
       try{
           route[path](request,response);
       }catch (err){  //对异常进行捕获 ,访问的方法不存在
            console.log("参数错误:"+err);
            response.write(err.toString());
            response.end("");
       }
    }
}).listen(3000);
console.log("server is running at http://127.0.0.1:3000/ !");

二、写一个路由模块,通过解析的参数调用不同的方法

route.js

module.exports = {
    "login" : function (request,response) {
            console.log("login...");
            response.end("");
    },
    "regist" : function (request,response) {
            console.log("regist...");
            response.end("");
    },
}
var route = require("./route");
//引用该模块 通过 route['login'](request,response) 可调用login方法 若不存在则会抛出异常

启动服务器后 ,浏览器访问 localhost:3000/login 控制台输出 login..

三、总结

1.通过判断favicon.ico防止nodejs重复请求

if(reqUrl!="/favicon.ico"){}

2.require("url")引入url模块来帮助解析url:参考API : http://nodejs.cn/api/url.html

3.每个请求结束务必使用response.end()结束,否则服务器将一直处于请求状态

4.捕获异常使程序更加健壮

转载请注明:左手代码右手诗 » Node.js-解析URL实现访问路由

喜欢 (1)or分享 (0)
发表我的评论
取消评论

 

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址