這是我參與8月更文挑戰的第4天,活動詳情查看:8月更文挑戰html
當請求路由的時候會計入路由的處理方法中,這個方法本質是中間件,包括三個參數,即請求對象Request,返回對象Response和執行下一步方法 nextjson
router.get('/iwhao', function(req, res, next) {
console.log(req.url) // 當訪問路由/iwhao時控制檯會打印 /iwhao
res.render('index', { title: 'Express' });
});
複製代碼
router.get('/iwhao?page=11231313', function(req, res, next) {
// 當訪問路由 /iwhao?page=11231313 時控制檯會打印 11231313
console.log(req.query.page)
res.render('index', { title: 'Express' });
});
複製代碼
router.get('/iwhao/:id', function(req, res, next) {
console.log(req.params)
res.render('index', { title: 'Express' });
});
複製代碼
當訪問路由/iwhao/123123 時控制檯會打印 {id: '123123'}後端
和get獲取參數方式同樣,Express 已經將POST 請求參數封裝在了Request.body對象中,一樣是以鍵值對的形式存在,方便獲取處理 代碼以下api
router.post('/iwhao', function(req, res, next) {
console.log(req.body)
res.render('index', { title: 'Express' });
});
複製代碼
router.post('/iwhao', function(req, res, next) {
console.log(req.headers)
res.send(req.headers);
});
複製代碼
藉助postman 接口請求工具 在headers中傳入鍵爲name值爲chaoren的參數,而後請求後返回結果以下能夠獲取到請求頭中的默認和自定義數據 數組
上面說了請求,既然有個請求,那確定有相應返回值,下面介紹返回對象Responsemarkdown
參數 | 參數類型 | 是否必選 | 做用 |
---|---|---|---|
view | String | 是 | 頁面文件,用於渲染的文件路徑 |
locals | Object | 否 | 屬性定義頁面的局部變量 |
callback | function | 否 | 回調函數,返回可能的錯誤和呈現的字符串,但不執行自動響應,發生錯誤是該方法在next(err) 內部調用 |
send() 方法 只發送一個https響應至請求端,只接收一個參數,這個參數能夠是任何類型app
之因此能夠接收任何類型的參數是由於執行這個方法的時候會自動設置響應頭數據類型,即響應頭裏Conten-Type字段 1.當參數爲Buffer對象時 Response.send() 將Conten-Type響應頭字段設置爲application/octet-stream前後端分離
router.get(/iwhao/, function(req, res, next) {
res.send(Buffer('<p>我是213131313</p>'));
});
複製代碼
在Postman 中查看請求,會發現返回的響應頭中Conten-Type字段值爲 application/octet-stream svn
2.當參數爲String時 Response.send()方法將將Conten-Type響應頭字段設置爲text/html函數
res.send('<p>I am iron man</p>');
複製代碼
3.當參數爲Array或Object時 Response.send()方法將將Conten-Type響應頭字段設置爲application/json;
res.send([1,2,3,4,5]);
res.send({name:'iron man'});
複製代碼
除了以前使用模板返回html頁面以外,返回json格式的數據也是目前最爲流行的,也能夠叫作 api接口, 尤爲是在先後端分離的開發模式下,更爲用途普遍,全部學習怎樣返回json 數據也很重要
res.json({
name:'iron man',
title:'無敵'
})
複製代碼
Response.json() 方法只接受一個參數,能夠是任何的Json格式類型,包括對象、數組字符串
// res.status(500).end()
res.status(403).end()
複製代碼
使用res.status 後必定要寫 end() 或者send和json方法當結尾,由於status 只是設置狀態,並無返回結果
訪問/iwhao 會跳轉到 /ceshi
router.get(/iwhao/, function(req, res, next) {
res.redirect('/ceshi')
});
router.get('/ceshi', function(req, res, next) {
res.json({name:'iron man'});
});
複製代碼
Response.redirect() 還能夠設定 http狀態碼
res.redirect(301,'/ceshi')
複製代碼
以上就是本篇的所有內容了,很是感謝帥哥美女們能看到這裏,若是這個文章寫得還不錯或者對你有一點點幫助,求點贊,求關注,求分享,固然有任何問題能夠在評論討論,我都會積極回答的,再次感謝😁