使用Node+Express 建構網站(二)

第六章 請求與回應物件

URL的各部分

http://localhost:3000/about?test=1#history
https://google.com/#q=express

協定主機名稱連接埠路徑查詢字串片段
http://
https://
localhost
google.com
:3000

/about
/
?test=1#history
#q=express

片段:
片段(fragment)(或雜湊 (hash)),不會傳至伺服器,它完全是供瀏覽器使用的。單頁應用程式或重度的AJAX應用程式已經越來越喜歡使用片段來控制應用程式。

請求物件

請求物件一開始是http.IncomingMessage的實例,Node的核心物件。Express加入額外的功能

req.params
含有具有名稱的路由參數的陣列
req.param
回傳具有名稱的路由參數,或GET或POST參數。(建議你不要使用這個方法)
req.query
含有查詢物件字串參數的物件(有時稱為GET參數),名為稱/值配對。
req.body
物件包含POST參數。它如此命名,是因為POST參數會被傳入REQUEST的內文,不是像查詢字串參數一樣的URL。要使用req.body,你需要中介軟體來解析內文類型。
req.route
req.cookies/req.signedCookies
req.headers
接受自用戶端的請求標頭
req.accepts([types])
req.ip
req.path
req.host
req.xhr
req.protocol
req.secure
如果連結是受到安全防護的,這個方便的特性會回傳true。它相當於
req.protol==='https'
req.url

回應物件

res.statue(code)
設定HTTP狀態碼。Express的預設值是200(OK),所以你會使用這個方法來回傳404(沒有找到)或500(伺服器錯誤)或其他想要用的狀態碼。對於重新導向轉接(狀態碼301,302,303及307),有一個較好的方法:redirect

res.set(name, value)
設定回應標頭。你通常不會手動改變它。

res.redirect([status], url)
將瀏覽器重新導向轉接
res.send(body), res.send(status, body)

res.josn(json), res.josn(status, json)

顯示內容

res.render,它會顯示視圖與版面配置

基本用法
app.get('/about', function(req, res) {
res.render('about');
});

除了200之外的回應碼
app.get('/error', function(req, res) {
res.status(500);
res.render('error');
});

傳遞內容之視圖,包括查詢字串、cookie及期待值
app.get('/greeting', function(req, res) {
res.render('about', {
message: 'welcome',
style: req.query.style,
userid: req.cookie.userid,
username: req.session.username,
});
});

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料