一個方便的參考,列出所有請求物件屬性以及如何使用它們
請求參數
我提到過請求物件保存了所有的HTTP請求信息。
這些是你可能會用到的主要屬性:
屬性 | 描述 |
---|---|
.app | 保存了對Express應用程式物件的引用 |
.baseUrl | 應用程式回應的基本路徑 |
.body | 包含請求主體中提交的資料(必須在可以訪問它之前對其進行解析和填充) |
.cookies | 包含請求中傳送的 cookie(需要 cookie-parser 的中介軟體) |
.hostname | 主機名稱,根據 Host HTTP 標頭 的值 |
.ip | 客戶端的 IP 位址 |
.method | 使用的 HTTP 方法 |
.params | 命名路由參數 |
.path | URL 路徑 |
.protocol | 請求協議 |
.query | 包含請求中使用的所有查詢字串的物件 |
.secure | 如果請求是安全的(使用 HTTPS)則為 true |
.signedCookies | 包含請求中傳送的簽名 cookie(需要 cookie-parser 的中介軟體) |
.xhr | 如果請求是 XMLHttpRequest 則為 true |
如何使用 Express 擷取 GET 查詢字串參數
查詢字串是 URL 路徑後面的部分,以問號 ?
開頭。
例如:
?name=flavio
可以使用 &
添加多個查詢參數:
?name=flavio&age=35
如何在 Express 中獲取這些查詢字串的值?
Express非常簡單,將它們託管到 Request.query
物件中:
const express = require('express')
const app = express()
app.get('/', (req, res) => {
console.log(req.query)
})
app.listen(8080)
這個物件的每個查詢參數都有一個屬性。
如果沒有查詢參數,它將是一個空物件。
這使得可以使用 for…in 迴圈循環迭代:
for (const key in req.query) {
console.log(key, req.query[key])
}
這將輸出查詢屬性的鍵和值。
也可以直接訪問單個屬性:
req.query.name //flavio
req.query.age //35
如何使用 Express 擷取 POST 查詢字串參數
POST 查詢字串是由HTTP客戶端發送的,例如通過表單或使用 POST 請求發送資料。
如何存取這些資料?
如果資料是以 JSON 格式發送的,使用 Content-Type: application/json
,你可以使用 express.json()
中介軟體:
const express = require('express')
const app = express()
app.use(express.json())
如果資料是使用 Content-Type: application/x-www-form-urlencoded
發送的,你需要使用 express.urlencoded()
中介軟體:
const express = require('express')
const app = express()
app.use(express.urlencoded({
extended: true
}))
在兩種情況下,可以通過從 Request.body
引用它們來存取資料:
app.post('/form', (req, res) => {
const name = req.body.name
})
注意:較舊的 Express 版本需要使用
body-parser
模組來處理 POST 資料。從 Express 4.16版(於2017年9月發布)開始,不再需要使用該模組。