Nodejs教程-Express.js 请求对象
在 Express.js 应用中,请求对象(Request)和响应对象(Response)是回调函数的参数。
Express.js 请求对象代表了 HTTP 请求,其中包含了查询字符串、参数、请求体、HTTP 头部等信息。
语法:
app.get('/', function (req, res) {
// --
})
Express.js 请求对象属性
下表列出了一些与请求对象相关的属性。
索引 | 属性 | 描述 |
---|---|---|
1 | req.app | 保留了对使用该中间件的 Express 应用实例的引用。 |
2 | req.baseUrl | 指定了路由实例所挂载的 URL 路径。 |
3 | req.body | 包含了提交的请求体中的键值对数据。默认情况下为 undefined,当使用像 body-parser 这样的 body-parsing 中间件时会被填充。 |
4 | req.cookies | 当使用 cookie-parser 中间件时,这个属性是一个包含请求中发送的 Cookie 的对象。 |
5 | req.fresh | 表示请求是否“新鲜”。与 req.stale 相反。 |
6 | req.hostname | 包含了 "host" HTTP 头部中的主机名。 |
7 | req.ip | 指定了请求的远程 IP 地址。 |
8 | req.ips | 当信任代理设置为 true 时,这个属性包含了在 ?x-forwarded-for? 请求头中指定的 IP 地址的数组。 |
9 | req.originalUrl | 这个属性与 req.url 类似,但它保留了原始的请求 URL,允许您自由地为内部路由目的重新编写 req.url。 |
10 | req.params | 包含了与命名路由“参数”映射的属性。例如,如果有路由 /user/:name,则 "name" 属性可以通过 req.params.name 访问。这个对象默认为空对象。 |
11 | req.path | 包含了请求 URL 的路径部分。 |
12 | req.protocol | 请求协议字符串,在使用 TLS 时为 "http" 或 "https"。 |
13 | req.query | 包含了查询字符串中每个参数的属性对象。 |
14 | req.route | 当前匹配的路由,一个字符串。 |
15 | req.secure | 如果建立了 TLS 连接,则为 true 的布尔值。 |
16 | req.signedCookies | 当使用 cookie-parser 中间件时,这个属性包含了请求中发送的已签名的 Cookie,准备好被使用。 |
17 | req.stale | 表示请求是否“陈旧”。与 req.fresh 相反。 |
18 | req.subdomains | 表示请求的域名中的子域的数组。 |
19 | req.xhr | 一个布尔值,如果请求的 "x-requested-with" 头部字段是 "xmlhttprequest",则为 true,表示该请求是由客户端库(例如 jQuery)发起的。 |
请求对象方法
以下是一些通常使用的请求对象方法:
req.accepts(types)
该方法用于检查指定的内容类型是否可以被接受,基于请求的 Accept HTTP 头部字段。
示例:
req.accepts('html');
//=> "html"
req.accepts('text/html');
// => "text/html"
req.get(field)
该方法返回指定的 HTTP 请求头部字段。
示例:
req.get('Content-Type');
// => "text/plain"
req.get('content-type');
// => "text/plain"
req.get('Something');
// => undefined
req.is(type)
该方法在传入的请求的 "Content-Type" HTTP 头部字段与指定的 MIME 类型相匹配时返回 true。
示例:
// 使用 Content-Type: text/html; charset=utf-8
req.is('html');
req.is('text/html');
req.is('text/*');
// => true
req.param(name [, defaultValue])
该方法在参数 name 存在时获取其值。
示例:
// ?name=sasha
req.param('name')
// => "sasha"
// POST name=sasha
req.param('name')
// => "sasha"
// /user/sasha 对于 /user/:name
req.param('name')
// => "sasha"