如何在 Express 中使用 req 对象

介绍

对于短requestreq对象的一半request,并response循环检查从客户端调用,使HTTP请求,并处理传入的数据是否在字符串或JSON对象。

在本文中,您将了解reqExpress 中对象。

先决条件

要阅读本文,您需要:

管理客户端数据

Express服务器通过接收来自客户端的数据req的:对象在三个实例req.paramsreq.queryreq.body对象。

req.params对象根据 URL 中指定的参数捕获数据。在您的index.js文件中,GET使用以下参数实现请求'/:userid'

索引.js
// GET https://example.com/user/1

app.get('/:userid', (req, res) => {
  console.log(req.params.userid) // "1"
})

req.params对象告诉 Express 通过参数 输出用户 id 的结果'/:userid'在这里,带有指定参数GET请求以https://example.com/user/1id 登录到控制台"1"

要访问 URL 查询字符串,请将req.query对象应用于搜索、过滤和排序数据。在您的index.js文件中,包含GET对路由请求'/search'

索引.js
// GET https://example.com/search?keyword=great-white

app.get('/search', (req, res) => {
  console.log(req.query.keyword) // "great-white"
})

req.query在查询条件中使用对象匹配从客户端加载的数据。在这种情况下,对路由GET请求'/search'通知 Express 将搜索查询中的关键字匹配到https://example.com.keyword属性附加req.query对象的结果会记录到控制台中"great-white"

req.body对象允许您从客户端访问字符串或 JSON 对象中的数据。您通常使用该req.body对象通过Express 服务器接收数据POSTPUT请求。

在您的index.js文件中,设置POST对路由请求'/login'

// POST https://example.com/login
//
//      {
//        "email": "[email protected]",
//        "password": "helloworld"
//      }

app.post('/login', (req, res) => {
  console.log(req.body.email) // "[email protected]"
  console.log(req.body.password) // "helloworld"
})

当用户在客户端输入他们的电子邮件和密码时,该req.body对象会存储该信息并将其发送到您的 Express 服务器。req.body对象记录到控制台会生成用户的电子邮件和密码。

既然您已经研究了实现req对象的方法,让我们看看其他方法来集成到您的 Express 服务器中。

检查具有req属性的 URL

req对象上的属性还可以根据解剖结构返回 URL 的部分。这包括protocolhostnamepathoriginalUrl,和subdomains

在您的index.js文件中,设置GET'/creatures'路由请求

索引.js
// https://ocean.example.com/creatures?filter=sharks

app.get('/creatures', (req, res) => {
  console.log(req.protocol)     // "https"
  console.log(req.hostname)     // "example.com"
  console.log(req.path)         // "/creatures"
  console.log(req.originalUrl)  // "/creatures?filter=sharks"
  console.log(req.subdomains)   // "['ocean']"
})

您可以使用内置的属性,如访问URL的各个部分.protocol.hostnamereq使用每个属性记录对象会导致 URL 的解剖结构。

分析其他req属性

res对象包含的属性可以最大化您对 HTTP 请求的调用。

要访问HTTP方法,无论是GETPOSTPUT,或者DELETE,利用.method属性的req对象。在您的index.js文件中,实现DELETE对匿名端点请求:

索引.js
app.delete('/', (req, res) => {
  console.log(req.method) // "DELETE"
})

.method属性返回当前的 HTTP 请求方法。在这种情况下,控制台会记录一个DELETE方法。

对于发送到您的服务器的标头,请将方法附加.header()到您的req对象。设置文件中POST路由请求'/login'index.js

索引.js
app.post('/login', (req, res) => {
  req.header('Content-Type')  // "application/json"
  req.header('user-agent')    // "Mozilla/5.0 (Macintosh Intel Mac OS X 10_8_5) AppleWebKi..."
  req.header('Authorization') // "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
})

req.header()方法将返回标头类型,例如Content-Typeand Authorizationfor 的参数req.header()不区分大小写,因此您可以使用req.header('Content-Type')req.header('content-type')互换。

如果您cookie-parser在 Express 服务器中添加了依赖项,则该req.cookies属性将存储来自解析器的值。在您的index.js文件中,设置一个实例req.cookies并应用该sessionDate属性:

索引.js
// Cookie sessionDate=2019-05-28T01:49:11.968Z

req.cookies.sessionDate // "2019-05-28T01:49:11.968Z"

请注意从req对象调用时从 cookie 的会话日期返回的结果

结论

Express 提供了内置属性来利用req对象作为request循环的一部分来处理来自客户端的 HTTP 请求和数据。如果您想查看官方文档,req请访问官方 Express.js 文档

觉得文章有用?

点个广告表达一下你的爱意吧 !😁