关于req.params、req.query、req.body等请求对象
请求对象,通常传递到回调方法,这意味着你可以随意命名,通常命名为 req 或 request 。
请求对象中最常用的属性和方法有:
req.params
一个数组,包含命名过的路由参数。
req.param(name)
返回命名的路由参数,或者 GET 请求或 POST 请求参数。建议你忽略此方法。
req.query
一个对象,包含以键值对存放的查询字符串参数(通常称为 GET 请求参数) 。
req.body
一个对象,包含 POST 请求参数。这样命名是因为 POST 请求参数在 REQUEST 正文中传递,而不像查询字符串在 URL 中传递。要使 req.body 可用,需要中间件能够解析请求正文内容类型。
req.route
关于当前匹配路由的信息。主要用于路由调试。
req.cookies/req.singnedCookies
一个对象,包含从客户端传递过来的 cookies 值。
req.headers
从客户端接收到的请求报头。
req.accepts([types])
一个简便的方法,用来确定客户端是否接受一个或一组指定的类型(可选类型可以是单个的 MIME 类型,如 application/json 、一个逗号分隔集合或是一个数组) 。写公共API 的人对该方法很感兴趣。假定浏览器默认始终接受 HTML。
req.ip
客户端的 IP 地址。
req.path
请求路径(不包含协议、主机、端口或查询字符串) 。
req.host
一个简便的方法,用来返回客户端所报告的主机名。这些信息可以伪造,所以不应该用于安全目的。
req.xhr
一个简便属性,如果请求由 Ajax 发起将会返回 true 。
req.protocol
用于标识请求的协议( http 或 https ) 。
req.secure
一个简便属性,如果连接是安全的,将返回 true 。等同于req.protocol===’https’ 。
req.url/req.originalUrl
这些属性返回了路径和查询字符串(它们不包含协议、主机或端口) 。req.url 若是出于内部路由目的,则可以重写,但是req.orginalUrl
旨在保留原始请求和查询字符串。
req.acceptedLanguages
一个简便方法,用来返回客户端首选的一组(人类的)语言。这些信息是从请求报头中解析而来的。