Node.js - 请求对象(Request Object)


req.对象 表示 HTTP 请求,并具有请求查询字符串、参数、正文、HTTP 标头等的属性。

请求对象属性

以下是与请求对象关联的几个属性的列表。

属性 描述
req.app

此属性包含对使用中间件的 express 应用程序实例的引用。

req.baseUrl

挂载路由器实例的 URL 路径。

req.body

包含在请求正文中提交的数据的键值对。默认情况下,它是 undefined,并在您使用 body-parser 等 body-parsing 中间件时填充

req.cookies

使用 cookie-parser 中间件时,此属性是包含请求发送的 Cookie 的对象。

req.fresh

指示请求是否为 “fresh”。它与 req.stale 相反。

req.hostname

包含来自 “Host” HTTP 标头的主机名。

req.ip

请求的远程 IP 地址。

req.ips

当信任代理设置为 true 时,此属性包含在 “X-Forwarded-For” 请求标头中指定的 IP 地址数组。

req.originalUrl

这个属性很像 req.url;但是,它保留了原始请求 URL,允许您自由重写 req.url 以用于内部路由目的。

req.params

一个包含映射到命名路由 “parameters” 的属性的对象。例如,如果您有路由 /user/:name,则 “name” 属性 req.params.name。此对象默认为 {}。

req.path

包含请求 URL 的 path 部分。

req.protocol

请求协议字符串,使用 TLS 请求时为 “http” 或 “https”。

req.query

一个对象,其中包含路由中每个查询字符串参数的属性。

req.route

当前匹配的路由是一个字符串。

req.secure

如果已建立 TLS 连接,则为 true 的布尔值。

req.signedCookies

使用 cookie-parser 中间件时,此属性包含请求发送的已签名 cookie,未签名且可供使用。

req.stale

指示请求是否为 “stale” ,并且与 req.fresh 相反。

req.subdomains

请求域名中的子域数组。

req.xhr

如果请求的 “X-Requested-With” 标头字段为 “XMLHttpRequest”,则为 true 的布尔值,指示请求是由 jQuery 等客户端库发出的。

请求对象方法

req.accepts(类型)


req.accepts(types)

此方法根据请求的 Accept HTTP 标头字段检查指定的内容类型是否可接受。以下是一些示例 -


// Accept: text/html
req.accepts('html');
// => "html"

// Accept: text/*, application/json
req.accepts('html');

// => "html"
req.accepts('text/html');
// => "text/html"

req.get(字段)


req.get(field)

该方法返回指定的 HTTP 请求头字段。以下是一些示例 -


req.get('Content-Type');
// => "text/plain"

req.get('content-type');
// => "text/plain"

req.get('Something');
// => undefined

req.is(type)


req.is(type)

如果传入请求的 “Content-Type” HTTP 标头字段与 type 参数指定的 MIME 类型匹配,则此方法返回 true。以下是一些示例 -


// With Content-Type: text/html; charset=utf-8
req.is('html');
req.is('text/html');
req.is('text/*');
// => true

req.param(名称 [, defaultValue])


req.param(name [, defaultValue])

此方法返回 param name 的值(如果存在)。以下是一些示例 -


// ?name=tobi
req.param('name')
// => "tobi"

// POST name=tobi
req.param('name')
// => "tobi"

// /user/tobi for /user/:name 
req.param('name')
// => "tobi"