推荐答案
在 Express 中,req 对象代表 HTTP 请求,并具有许多常用的属性和方法。以下是一些常见的属性和方法:
常用属性
- req.params: 包含路由参数的对象。例如,对于路由
/user/:id,req.params.id将包含id参数的值。 - req.query: 包含解析后的查询字符串参数的对象。例如,对于 URL
/search?q=express,req.query.q将是"express"。 - req.body: 包含请求体中的数据,通常在 POST 或 PUT 请求中使用。需要中间件(如
body-parser)来解析请求体。 - req.headers: 包含请求头信息的对象。
- req.cookies: 包含请求中的 cookies 的对象。需要
cookie-parser中间件来解析 cookies。 - req.ip: 请求的 IP 地址。
- req.path: 请求的路径部分。
- req.hostname: 请求的主机名。
- req.protocol: 请求的协议(
http或https)。 - req.originalUrl: 请求的原始 URL。
常用方法
- req.get(field): 获取请求头中的指定字段的值。
- req.is(type): 检查请求的
Content-Type是否与指定的类型匹配。 - req.accepts(types): 检查请求是否接受指定的 MIME 类型。
- req.acceptsCharsets(charset): 检查请求是否接受指定的字符集。
- req.acceptsEncodings(encoding): 检查请求是否接受指定的编码。
- req.acceptsLanguages(lang): 检查请求是否接受指定的语言。
- req.range(size): 解析
Range请求头。
本题详细解读
req.params
req.params 是一个对象,包含路由参数。例如,如果你有一个路由 /user/:id,当请求 /user/123 时,req.params.id 将是 "123"。这个属性在处理动态路由时非常有用。
req.query
req.query 是一个对象,包含解析后的查询字符串参数。例如,对于 URL /search?q=express&page=2,req.query 将是 { q: 'express', page: '2' }。这个属性通常用于处理 GET 请求中的查询参数。
req.body
req.body 包含请求体中的数据,通常在 POST 或 PUT 请求中使用。要使用 req.body,你需要使用中间件(如 body-parser 或 express.json())来解析请求体。例如,如果你发送一个 JSON 请求体 { "name": "John" },req.body.name 将是 "John"。
req.headers
req.headers 是一个对象,包含请求头信息。你可以通过 req.get(field) 方法来获取特定的请求头值。例如,req.get('Content-Type') 将返回请求的 Content-Type 头。
req.cookies
req.cookies 是一个对象,包含请求中的 cookies。要使用 req.cookies,你需要使用 cookie-parser 中间件来解析 cookies。例如,如果请求中包含一个名为 session 的 cookie,你可以通过 req.cookies.session 来访问它。
req.ip
req.ip 返回请求的 IP 地址。这个属性在处理需要记录或验证客户端 IP 地址的场景时非常有用。
req.path
req.path 返回请求的路径部分。例如,对于 URL /user/123/profile,req.path 将是 "/user/123/profile"。
req.hostname
req.hostname 返回请求的主机名。例如,对于 URL http://example.com/user,req.hostname 将是 "example.com"。
req.protocol
req.protocol 返回请求的协议(http 或 https)。这个属性在处理需要根据协议进行不同操作的场景时非常有用。
req.originalUrl
req.originalUrl 返回请求的原始 URL。这个属性在处理需要记录或重定向请求的场景时非常有用。
req.get(field)
req.get(field) 方法用于获取请求头中的指定字段的值。例如,req.get('Content-Type') 将返回请求的 Content-Type 头。
req.is(type)
req.is(type) 方法用于检查请求的 Content-Type 是否与指定的类型匹配。例如,req.is('application/json') 将返回 true 如果请求的 Content-Type 是 application/json。
req.accepts(types)
req.accepts(types) 方法用于检查请求是否接受指定的 MIME 类型。例如,req.accepts('json') 将返回 true 如果请求接受 application/json。
req.acceptsCharsets(charset)
req.acceptsCharsets(charset) 方法用于检查请求是否接受指定的字符集。例如,req.acceptsCharsets('utf-8') 将返回 true 如果请求接受 utf-8 字符集。
req.acceptsEncodings(encoding)
req.acceptsEncodings(encoding) 方法用于检查请求是否接受指定的编码。例如,req.acceptsEncodings('gzip') 将返回 true 如果请求接受 gzip 编码。
req.acceptsLanguages(lang)
req.acceptsLanguages(lang) 方法用于检查请求是否接受指定的语言。例如,req.acceptsLanguages('en') 将返回 true 如果请求接受 en 语言。
req.range(size)
req.range(size) 方法用于解析 Range 请求头。这个方法在处理需要支持范围请求的场景时非常有用。例如,req.range(1000) 将返回一个数组,表示请求的范围。