我有一個帶有一堆路由的快速 API。
routes.get('/', perms('read', 'document'), r(CRUD.getAll))
routes.get('/search', perms('read', 'document'), r(CRUD.search))
routes.get('/:id', perms('read', 'document'), r(CRUD.getById))
我確保/search上面有/:id,但是,當有新請求進入時/search,我看到兩個端點都受到了打擊(我console.log在每個函式中添加了一個內部)。
我嘗試翻轉兩者,在這種情況下,只會/:id受到打擊。
知道為什么會發生這種情況嗎?

uj5u.com熱心網友回復:
將 Express 路由視為一組具有匹配規則 (url) 的處理程式(中間件)。當一個請求進來時,路由器開始檢查陣列中的每一項。如果它符合規則,那么它就會運行(有些沒有條件,所以它們只是運行:))。匹配 url 時請求鏈不會結束!您可以對同一個請求執行多個處理程式/中間件。
因此,這實際上取決于處理程式內部發生的情況。您可以告訴它轉到串列中的下一個專案,如果有另一個匹配項 - 將執行下一個處理程式(如/searchand /:id,它將再次搜索)。
確保您結束您的回復。請注意是否呼叫next以及使用什么引數。發布一些處理程式示例以便對其進行更多除錯:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/415432.html
標籤:
上一篇:從檔案node.js中讀取隨機行
