Express 中 req 对象的常用属性和方法有哪些?

· 约 6 分钟读完 · 第 112 / 120 章

推荐答案

在 Express 中,req 对象代表 HTTP 请求,并具有许多常用的属性和方法。以下是一些常见的属性和方法:

常用属性

  1. req.params: 包含路由参数的对象。例如,对于路由 /user/:id,req.params.id 将包含 id 参数的值。
  2. req.query: 包含解析后的查询字符串参数的对象。例如,对于 URL /search?q=express,req.query.q 将是 "express"。
  3. req.body: 包含请求体中的数据,通常在 POST 或 PUT 请求中使用。需要中间件(如 body-parser)来解析请求体。
  4. req.headers: 包含请求头信息的对象。
  5. req.cookies: 包含请求中的 cookies 的对象。需要 cookie-parser 中间件来解析 cookies。
  6. req.ip: 请求的 IP 地址。
  7. req.path: 请求的路径部分。
  8. req.hostname: 请求的主机名。
  9. req.protocol: 请求的协议(http 或 https)。
  10. req.originalUrl: 请求的原始 URL。

常用方法

  1. req.get(field): 获取请求头中的指定字段的值。
  2. req.is(type): 检查请求的 Content-Type 是否与指定的类型匹配。
  3. req.accepts(types): 检查请求是否接受指定的 MIME 类型。
  4. req.acceptsCharsets(charset): 检查请求是否接受指定的字符集。
  5. req.acceptsEncodings(encoding): 检查请求是否接受指定的编码。
  6. req.acceptsLanguages(lang): 检查请求是否接受指定的语言。
  7. 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) 将返回一个数组,表示请求的范围。