所謂“路由”,就是指為不同的訪問路徑,指定不同的處理方法。
(1)指定根路徑
在app.js之中,先指定根路徑的處理方法。
~~~
app.get('/', function(req, res) {
res.send('Hello World');
});
~~~
上面代碼的get方法,表示處理客戶端發出的GET請求。相應的,還有app.post、app.put、app.del(delete是JavaScript保留字,所以改叫del)方法。
get方法的第一個參數是訪問路徑,正斜杠(/)就代表根路徑;第二個參數是回調函數,它的req參數表示客戶端發來的HTTP請求,res參數代表發向客戶端的HTTP回應,這兩個參數都是對象。在回調函數內部,使用HTTP回應的send方法,表示向瀏覽器發送一個字符串。然后,運行下面的命令。
~~~
node app.js
~~~
此時,在瀏覽器中訪問[http://127.0.0.1:3000,網頁就會顯示“Hello](http://127.0.0.1:3000%EF%BC%8C%E7%BD%91%E9%A1%B5%E5%B0%B1%E4%BC%9A%E6%98%BE%E7%A4%BA%E2%80%9CHello/)?World”。
如果需要指定HTTP頭信息,回調函數就必須換一種寫法,要使用setHeader方法與end方法。
~~~
app.get('/', function(req, res){
var body = 'Hello World';
res.setHeader('Content-Type', 'text/plain');
res.setHeader('Content-Length', body.length);
res.end(body);
});
~~~
(2)指定特定路徑
上面是處理根目錄的情況,下面再舉一個例子。假定用戶訪問/api路徑,希望返回一個JSON字符串。這時,get可以這樣寫。
~~~
app.get('/api', function(request, response) {
response.send({name:"張三",age:40});
});
~~~
上面代碼表示,除了發送字符串,send方法還可以直接發送對象。重新啟動node以后,再訪問路徑/api,瀏覽器就會顯示一個JSON對象。
~~~
{
"name": "張三",
"age": 40
}
~~~
我們也可以把app.get的回調函數,封裝成模塊。先在routes目錄下面建立一個api.js文件。
~~~
// routes/api.js
exports.index = function (req, res){
res.json(200, {name:"張三",age:40});
}
~~~
然后,在app.js中加載這個模塊。
~~~
// app.js
var api = require('./routes/api');
app.get('/api', api.index);
~~~
現在訪問時,就會顯示與上一次同樣的結果。
如果只向瀏覽器發送簡單的文本信息,上面的方法已經夠用;但是如果要向瀏覽器發送復雜的內容,還是應該使用網頁模板。
- 1. 概述
- 1.1 搭建HTTPs服務器
- 2. 運行原理
- 2.1 底層:http模塊
- 2.2 對http模塊的再包裝
- 2.3 什么是中間件
- 2.4 use方法
- 3. Express的方法
- 3.1 all方法和HTTP動詞方法
- 3.2 set方法
- 3.3 response對象
- 3.4 requst對象
- 4. 項目開發實例
- 4.1 編寫啟動腳本
- 4.2 配置路由
- 4.3 靜態網頁模板
- 5. 動態網頁模板
- 5.1 安裝模板引擎
- 5.2 新建數據腳本
- 5.3 新建網頁模板
- 5.4 渲染模板
- 5.5 指定靜態文件目錄
- 6. ExpressJS 4.0的Router用法
- 6.1 基本用法
- 6.2 router.route方法
- 6.3 router中間件
- 6.4 對路徑參數的處理
- 7. 上傳文件
- 8. 參考鏈接