Express Router:如何在 Node.js 中使用路由
Express 應用程序利用路由器,這些路由器本質上是一組中間件的容器。 我們可以只將這個中間件持有者放在一個特定的路徑上,這允許我們將我們的邏輯保存在單獨的文件中,並按照我們的條件將它們組合在一起。
高速路由器
Express Router 是一個內置類,它涉及應用程序的端點 (URI) 如何響應客戶端請求。 此外,快速路由器類有助於創建路由處理程序。
您使用與 HTTP 方法對應的 Express 應用程序對象方法定義路由; 例如,app.get() 處理 GET 請求和 app.post 處理 POST 請求。 如需完整列表,請參閱 app.METHOD。
您還可以使用 app.all() 處理所有 HTTP 方法,並使用 app.use() 將中間件指定為回調函數(有關詳細信息,請參閱使用中間件)。
這些路由方法指定當應用程序接收到對指定路由(端點)和 HTTP 方法的請求時調用的回調函數(有時稱為「處理函數」)。
換句話說,應用程序「監聽」與指定路由和方法匹配的請求,當它檢測到匹配時,它調用指定的回調函數。
路由方法可以有多個回調函數作為參數。
對於多個回調函數,重要的是提供 next 作為回調函數的參數,然後在函數體內調用 next() 以將控制權移交給下一個回調。
請參閱基本路由。
// server.js const express = require('express') const app = express() // respond with "hello world" when a GET request is made to the homepage app.get('/', function (req, res) { res.send('hello world') })
現在,讓我們回到我們的演示項目。
第 1 步:創建一個 express項目。
創建一個項目文件夾並進入該文件夾。
mkdir erouter && cd erouter
現在,使用以下命令初始化 package.json 文件。
npm init -y
現在,使用以下命令安裝 express。
npm install express --save # or yarn add express
第二步:讓我們寫第一條快車路線。
現在,在根文件夾中。 創建一個名為 server.js 的文件並添加以下代碼。
// server.js const express = require("express"); const app = express(); const PORT = process.env.PORT = 3000; let router = express.Router(); router.get('/',function(req,res){ res.json({'message' : 'Ping Successfull'}); }); app.use('/api',router); app.listen(PORT,function(){ console.log('Server is running at PORT:',PORT); });
首先,我們已經導入了所有需要的模塊,創建了一個路由器對象,然後定義了根路由。 然後我們使用中間件說,如果任何請求帶有’/api’,它將調用路由函數及其路由。 所以在我們的例子中,我們會得到一個 JSON 響應。
這是我們在 Node.js 平台上使用 express 創建 Web 應用程序時使用的基本路由示例。
快速路由器方法
Express 支持以下主要的路由方式。
- 得到
- 郵政
- 放
- 頭
- 刪除
- 選項
還有其他方法,但主要是我們在Web應用程序中使用了上述方法。 此外,還有一個名為 app.all() 的路由方法,它不是從任何 HTTP 方法派生的。
為所有請求方法的指定路徑處的函數載入路由方法。
路線路徑
路由路徑用於定義可以發出請求的端點。 它就像一個後端端點。 在 Express 中,路由路徑可以是字元串模式或正則表達式。
在上面的示例中,路由路徑如下。
// server.js router.get('/',function(req,res){ res.json({'message' : 'Ping Successfull'}); });
這裡,路由器路徑是「/」。
路由參數
路由參數捕獲指定到 URL 中特定位置的值。 因此,它們被稱為 URL 段。
獲得的值在 req.params 對象中可用,使用路徑中指定的路由參數的名稱作為值的鍵。
Route 參數在編輯、更新和刪除等功能中非常重要。 因此,我們一般會在參數上傳遞ID,然後從請求中提取出來。 語法是這樣的。
http://localhost:3000/api/user/:id
在 Express Router 中,我們可以使用以下代碼訪問 ID。
http://localhost:3000/api/user/1
在 req.params 中,將提供以下內容:{ 「id」: 「1」 }
因此,我們可以使用以下代碼訪問 1。
req.params.id
快速路由器 POST 請求
特快專遞路線的基本語法如下。
// server.js router.post('/', function(req, res){ res.send('It's a post route, grab the data and save in the Mongo'); });
在路由器 post 方法中,我們從 req 中保存數據,然後從 req 中提取該數據並將數據保存在資料庫中。
就像下面的代碼一樣。
router.route('/store').post(function (req, res) { let model = new Model(req.body); model.save() .then(game => { res.status(200).json({'model': 'Your data is saved'}); }) .catch(err => { res.status(400).send("unable to save to database"); }); });
所以,這裡我們使用了 Mongoose 模型將數據保存在 MongoDB 資料庫中。 這只是一個實時示例,將向您展示如何創建發布請求並將數據保存在資料庫中。
路由器級中間件
路由器級中間件的工作方式與應用級中間件相同,只是它綁定到 express.Router() 的實例。
// server.js const app = express(); const router = express.Router(); router.use(function (req, res, next) { console.log('Time:', Date.now()); next(); }); router.use('/user/:id', function (req, res, next) { console.log('Request URL:', req.originalUrl); next(); }, function (req, res, next) { console.log('Request Type:', req.method); next(); });
這就是本教程的內容。
也可以看看
節點快遞圖片上傳
如何在 express 中使用模板引擎
如何在快遞中提供靜態文件
快速錯誤處理
特快專遞請求