第六章 請求與回應物件
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,
});
});