為什么 Express.js 可以識別的 URL,不像我們看到的通常的 URL?
例如:Express.js 將識別這個 URL (http://localhost:3000/things/0) 如果我發出這個 GET 請求,其中 id=0:
app.get('/things/:id', (req, res) => {
// Do somethihng
});
但是這個 URL (http://localhost:3000/things/?id=0) 更像是我們看到的常見 URL,它不適用于上面的相同 GET 請求。
uj5u.com熱心網友回復:
(http://localhost:3000/things/?id=0) 這更像是通常的 URL
它是一個框架,它不會像你我想的那樣做。它有一套規則。談到RESTFUL API 的最佳實踐,設計是 path params( /:id) 用于識別特定資源或資源,而 query parameters( ?id) 用于對這些資源進行排序/過濾。所以,對于/things/?id=0,我們應該使用查詢引數。
我們看到不適用于上面的相同 GET 請求。
它不會那樣作業。為了獲取查詢引數,請使用類似
app.get('/things', (req, res) => {
let id = req.query.id;
// here you can get id.
});
查詢引數: 如何在 Node.js 上的 Express.js 中獲取 GET(查詢字串)變數?
關于網址:https : //developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_URL
uj5u.com熱心網友回復:
因此,“正常的 URL”顯然是旁觀者的眼中,因為實際上只是不同的樣式,兩者都不比另一個更正常。
有幾種方法可以在 URL 中傳遞引數。
#1 - 你可以將它嵌入到 URL 的路徑中
https://someserver/things/0
https://contacts.google.com/person/c3429579852656514228
這被稱為 RESTFUL 設計。這些 URL 包含一個名詞,然后是一個標識 URL 所指的名詞的 id。
#2 - 您可以將 URL 的可變部分放在查詢引數中
對于上面相同的兩個 URL,可能如下所示:
https://someserver/things?id=0
https://contacts.google.com/person?id=c3429579852656514228
這兩種設計都有合理的理由,具體取決于具體情況,甚至在某些情況下,您可以將兩者結合起來(在選項 #1 中將可選查詢引數添加到 restful API 設計中。兩者都不是“正常的” - 它們是設計 URL 的不同方式) .
Express 允許您使用其中任何一個。對于 URL 路徑中的 restful 引數,您可以使用:id語法并訪問 中的值req.params.id:
app.get('/things/:id', (req, res) => {
console.log(req.params.id);
res.send(req.params.id);
});
對于查詢引數,您無需在快速路由路徑中定義它們。相反,Express 決議任何路由上存在的任何查詢引數,并使其在req.query.
// expecting /things?id=789&sort=alpha
app.get('/things', (req, res) => {
console.log(req.query.id); // "789"
console.log(req.query.sort); // "alpha"
res.send(req.query.id);
});
URL 中存在的任何查詢引數都將添加到req.query物件中。
請注意,查詢引數通常被認為是可選的,因此您不會將它們編碼到您的路由定義中。如果您需要特定的查詢引數,則必須檢查它是否存在,如果不存在,則提供一些錯誤回應或呼叫next()以繼續路由到其他請求處理程式。
僅供參考,還有另一種風格通常使用客戶端代碼來幫助構建該頁面并將 URL 引數也放入哈希標記中,但我將把它留到另一天。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/406802.html
標籤:
上一篇:訓練神經網路來學習多項式方程
下一篇:如何使用快速服務器鍵入請求引數
