一個方便的參考,列出所有請求物件屬性以及如何使用它們

請求參數

我提到過請求物件保存了所有的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月發布)開始,不再需要使用該模組。