关于所有请求对象的属性以及如何使用它们的便捷参考资料
请求参数
我提到了Request对象如何保存所有的HTTP请求信息。
这些是你可能会用到的主要属性。
| 属性 | 描述 |
|---|---|
| .app | 持有对Express应用程序对象的引用 |
| .baseUrl | 应用程序响应的基本路径 |
| .body | 包含在请求正文中提交的数据(在你访问它之前必须手动解析和填充)。 |
| .cookies | 包含由请求发送的cookies(需要cookie-parser 中间件) |
| .hostname | 在Host HTTP头值中定义的主机名 |
| .ip | 客户端IP |
| .method | 使用的HTTP方法 |
| .params | 命名的路由参数 |
| .path | URL路径 |
| .protocol | 请求协议 |
| .query | 一个包含请求中使用的所有查询字符串的对象。 |
| .安全 | 如果该请求是安全的(使用HTTPS),则为true。 |
| .signedCookies | 包含请求所发送的签名的cookies(需要cookie-parser 中间件) |
| .xhr | 如果请求是一个XMLHttpRequest,则为true。 |
如何使用Express检索GET查询字符串的参数
查询字符串是在URL路径之后的部分,以一个问号开始? 。
例子。
可以使用& ,添加多个查询参数。
如何在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月发布)及以后的版本开始,这种情况就不再存在了。