Express框架定制路由實(shí)例分析
1、序言
上一節(jié)快速搭建Express開發(fā)系統(tǒng)步驟,對(duì)如何使用express-generator創(chuàng)建一個(gè)WEB項(xiàng)目進(jìn)行了說明,本節(jié)我們會(huì)對(duì)這個(gè)項(xiàng)目的代碼進(jìn)行分析,完成一個(gè)路由功能的開發(fā)。涉及的知識(shí)點(diǎn)有以下幾個(gè):
- 開發(fā)一個(gè)路由模塊(可以支持get和post請(qǐng)求)
- 測試(get請(qǐng)求用瀏覽器驗(yàn)證、post請(qǐng)求呢,我就用postman簡單處理一下,因?yàn)楸竟?jié)課程沒有想去講web端post請(qǐng)求的知識(shí),后續(xù)有機(jī)會(huì)單獨(dú)講解吧)
2、開發(fā)一個(gè)路由模塊
在上一篇文章中講到,我們以http://localhost:3000/system 路由為例,制作它的get和post請(qǐng)求路由。步驟如下:
2.1 在routes目錄下創(chuàng)建system.js文件
代碼內(nèi)容如下
var express = require('express'); var router = express.Router(); // get router router.get('/', function(req, res, next) { res.send('<p>這是get請(qǐng)求/system返回的資源</p>') }); // post router router.post('/:id', function(req, res, next) { var id = req.params.id; //注意這里的id是/:id指定的路由參數(shù) var name = req.body.name; var tel = req.body.tel; res.json({ status:'ok', message:'你發(fā)送的內(nèi)容('+ id + '、' + name + '、' + tel +')服務(wù)器已經(jīng)收到' }); }); module.exports = router;
解釋一下,router.get用于響應(yīng)http的get請(qǐng)求,router.post用于響應(yīng)http的post請(qǐng)求。我們?cè)诘谌糠烛?yàn)證時(shí),分別會(huì)通過瀏覽器和postman分別來對(duì)/system路由發(fā)起get和post請(qǐng)求。
此外,/:id這部分會(huì)映射到用戶的url請(qǐng)求路徑中,如你的請(qǐng)求鏈接是http://localhost:3000/system/2402040134,那么在post的處理函數(shù)中,會(huì)將:id匹配到2402040134這個(gè)值,相當(dāng)于是一個(gè)url參數(shù)。同時(shí),要注意,在代碼中獲取id的值時(shí),使用的是req.params這個(gè)對(duì)象。不可與req.body混淆。
2.2、如何使路由模塊生效
不過,目前這個(gè)代碼還沒有被注冊(cè)到/system路徑下,接下來我們需要在app.js中添加幾行代碼。
注:在app.js中第9行引入我們的system.js模塊,第24行,將這個(gè)模塊注冊(cè)在/system路徑上。
3、測試驗(yàn)證
在vs code中沒有顯示powershell控制臺(tái)時(shí),可以使用ctrl+` 喚醒。然后輸入npm start
,啟動(dòng)我們的項(xiàng)目。
3.1 驗(yàn)證router.get
這里我們通過瀏覽器訪問/system,就可以執(zhí)行到router.get后邊的方法,看看是否會(huì)得到預(yù)期的返回(是一段Html內(nèi)容)。
3.2 驗(yàn)證router.post
安裝postman的過程我不在這里描述了,大家自行安裝一下。以下截圖是我請(qǐng)求界面的信息及驗(yàn)證結(jié)果。
注意,在上圖中url中的2402040134即路由參數(shù),下方的name和tel是post的請(qǐng)求body內(nèi)容。最后,可以看到,返回了我們預(yù)期的json內(nèi)容。
4、總結(jié)
內(nèi)容不是很復(fù)雜,寫得比較簡單,為了方便初學(xué)的朋友跟著練習(xí)。當(dāng)然,不忘預(yù)告一下,下一章節(jié)我會(huì)以本文中提到的router.get請(qǐng)求為重點(diǎn),引入ejs模板的使用,讓大家可以通過res對(duì)象,通過數(shù)據(jù)+模板的方式,完成服務(wù)器端渲染生成頁面。
- Express的路由詳解
- 詳解NodeJS框架express的路徑映射(路由)功能及控制
- 詳解nuxt路由鑒權(quán)(express模板)
- nodejs開發(fā)——express路由與中間件
- 基于express中路由規(guī)則及獲取請(qǐng)求參數(shù)的方法
- Nodejs封裝類似express框架的路由實(shí)例詳解
- nodeJS?express路由學(xué)習(xí)req.body與req.query方法實(shí)例詳解
- vue路由history模式頁面刷新404解決方法Koa?Express
- Node Express用法詳解【安裝、使用、路由、中間件、模板引擎等】
- nodejs?express路由匹配控制及Router模塊化使用詳解
- 淺探express路由和中間件的實(shí)現(xiàn)
- NodeJs?Express路由使用流程解析
相關(guān)文章
NPM相關(guān)命令之報(bào)錯(cuò)node-gyp...的解決方法
node-gyp就是為node編譯c++擴(kuò)展的時(shí)候使用的編譯工具,下面這篇文章主要給大家介紹了關(guān)于NPM相關(guān)命令之報(bào)錯(cuò)node-gyp...的解決方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09Node.js實(shí)現(xiàn)前端后端數(shù)據(jù)傳輸加密解密
這篇文章主要介紹了Node.js實(shí)現(xiàn)前端后端數(shù)據(jù)傳輸加密解密,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08node.js操作mongoDB數(shù)據(jù)庫示例分享
這里給大家分享的是node.js操作mongoDB數(shù)據(jù)庫的示例,包括連接數(shù)據(jù)庫、插入數(shù)據(jù)、關(guān)閉數(shù)據(jù)庫、讀取數(shù)據(jù)、插入數(shù)據(jù)等方面,十分的全面,這里推薦給需要的小伙伴們。2014-11-11什么是MEAN?JavaScript編程中的MEAN是什么意思?
這篇文章主要介紹了什么是MEAN?JavaScript編程中的MEAN是什么意思?,跟lampp一樣,MEAN是指現(xiàn)代web應(yīng)用全棧開發(fā)工具一個(gè)組合,需要的朋友可以參考下2014-12-12node.js監(jiān)聽文件變化的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于node.js監(jiān)聽文件變化的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04