req对象表示HTTP请求,并具有请求查询字符串,参数,正文,HTTP标req属性。
28.1. 请求对象属性
以下是与请求对象关联的一些属性的列表。
req.app
:此属性包含对使用中间件的快速应用程序实例的引用。req.baseUrl
:安装路由器实例的URL路径。req.body
:包含请求正文中提交的键值对数据。默认情况下,它是未定义的,并在使用正文body-parser等body-parser解析中间件时填充。req.cookies
:使用cookie-parser中间件时,此属性是包含请求发送的cookie的对象。req.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”的属性的对象。 例如,如果您有route/user /:name
,那么“name”属性可用作req.params.name
。 该对象默认为{}
。req.path
:包含请求URL的路径部分。req.protocol
:使用TLS请求时,请求协议字符串“http”或“https”。req.query
:包含路由中每个查询字符串参数的属性的对象。req.route
:当前匹配的路由,一个字符串。req.secure
:一个布尔值,如果建立了TLS连接,则为true。req.signedCookies
:使用cookie-parser中间件时,此属性包含请求发送的已签名cookie,未签名且可以使用。req.stale
:指示请求是否“陈旧”,并且与req.fresh相反。req.subdomains
:请求域名中的一组子域。req.xhr
:一个布尔值,如果请求的X-Requested-With
头字段为XMLHttpRequest
,则为true,表示请求是由客户端库(如jQuery)发出的。
28.2. 请求对象方法
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(field)
- 此方法返回指定的HTTP请求标头字段。 以下是一些例子:
req.get('Content-Type'); // => "text/plain" req.get('content-type'); // => "text/plain" req.get('Something'); // => undefined
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(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"
下一节:res对象表示Express应用程序在收到HTTP请求时发送的HTTP响应。