nodejs進(jìn)階3-路由處理
發(fā)布時(shí)間:2017年01月04日 作者: 文章轉(zhuǎn)自網(wǎng)絡(luò),版權(quán)歸原作者所有,反饋可立刻刪除 (該文來(lái)自筆記,點(diǎn)擊查看原文)
1. 路由選擇過(guò)程
處理不同的HTTP請(qǐng)求在我們的代碼中是一個(gè)不同的部分,叫做“路由選擇”。
那么,我們接下來(lái)就創(chuàng)造一個(gè)叫做 路由 的模塊吧。我們需要查看HTTP請(qǐng)求,從中提取出請(qǐng)求的URL以及GET/POST參數(shù)。
url.parse(string).query
|
url.parse(string).pathname |
| |
| |
------ -------------------
http://localhost:8888/start?foo=bar&hello=world
--- -----
| |
| |
querystring(string)["foo"] |
|
querystring(string)["hello"]
2. 路由選擇實(shí)現(xiàn)代碼
新建屬于服務(wù)器端的路由文件router.js
復(fù)制代碼
1 //-----------------router.js--------------------------------
2 module.exports={
3 login:function(req,res){
4 res.write("我是login方法");
5 },
6 register:function(req,res){
7 res.write("我是注冊(cè)方法");
8 }
9 }
復(fù)制代碼
服務(wù)端調(diào)用路由,方式和上一節(jié)課《nodejs進(jìn)階2--函數(shù)模塊調(diào)用》中最后提到的字符串調(diào)用函數(shù)一樣。
復(fù)制代碼
1 //---------4_router.js-----------
2 var http = require('http');
3 var url = require('url');
4 var router = require('./router');
5 http.createServer(function (request, response) {
6 response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
7 if(request.url!=="/favicon.ico"){
8 var pathname = url.parse(request.url).pathname;//得到請(qǐng)求的路徑
9 console.log(pathname);
10 pathname = pathname.replace(/\//, '');//替換掉前面的/
11 console.log(pathname);
12 router[pathname](request,response);
13 response.end('');
14 }
15 }).listen(8000);
16 console.log('Server running at http://127.0.0.1:8000/');
復(fù)制代碼
上面我們用到了node自帶模塊url。url.path(urlStr):將一個(gè)URL字符串轉(zhuǎn)換成對(duì)象并返回。
3. url.path(urlStr)實(shí)例
下面展示兩個(gè)url.parse的實(shí)例
例1. url.parse('http://stackoverflow.com/questions/17184791').pathname
結(jié)果為:"/questions/17184791"
例2:
復(fù)制代碼
1 var url = require('url');
2 var a = url.parse('http://example.com:8080/one?a=index&t=article&m=default');
3 console.log(a);
4
5 //輸出結(jié)果:
6 {
7 protocol : 'http' ,
8 auth : null ,
9 host : 'example.com:8080' ,
10 port : '8080' ,
11 hostname : 'example.com' ,
12 hash : null ,
13 search : '?a=index&t=article&m=default',
14 query : 'a=index&t=article&m=default',
15 pathname : '/one',
16 path : '/one?a=index&t