28. 请求对象

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响应。