返回

Express 初探 —— 请求对象和响应对象

前端

在 Express 应用中,路由回调函数接收两个参数:request 和 response 对象。request 对象代表 HTTP 请求,并包含有关请求的信息,例如查询字符串、参数、正文和 HTTP 头。response 对象用于向客户端发送响应,并包含有关响应的信息,例如状态代码、正文和 HTTP 头。

请求对象

request 对象包含有关 HTTP 请求的各种信息,包括:

  • req.method:请求方法,例如 GET、POST、PUT 或 DELETE。
  • req.url:请求的 URL。
  • req.query:查询字符串参数。
  • req.params:路由参数。
  • req.body:请求正文。
  • req.headers:请求头。

查询字符串参数

查询字符串参数是附加在 URL 末尾的一系列键值对,由问号 (?) 分隔。例如,以下 URL 包含查询字符串参数 "name=John" 和 "age=30":

http://example.com/user?name=John&age=30

要访问查询字符串参数,可以使用 req.query 对象。例如,以下代码获取查询字符串参数 "name" 的值:

const name = req.query.name;

路由参数

路由参数是定义在路由路径中的变量。例如,以下路由路径定义了一个路由参数 "id":

/user/:id

要访问路由参数,可以使用 req.params 对象。例如,以下代码获取路由参数 "id" 的值:

const id = req.params.id;

请求正文

请求正文包含客户端发送给服务器的数据。例如,当用户提交表单时,表单数据将包含在请求正文中。

要访问请求正文,可以使用 req.body 对象。例如,以下代码获取请求正文中 "name" 字段的值:

const name = req.body.name;

请求头

请求头包含有关请求的元数据,例如请求的来源、用户代理和内容类型。例如,以下请求头指定请求的来源是 "http://example.com",用户代理是 "Mozilla/5.0",内容类型是 "application/json":

GET /user HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Content-Type: application/json

要访问请求头,可以使用 req.headers 对象。例如,以下代码获取请求头的 "User-Agent" 字段的值:

const userAgent = req.headers['user-agent'];

响应对象

response 对象用于向客户端发送响应。response 对象包含有关响应的各种信息,包括:

  • res.statusCode:响应状态代码,例如 200、404 或 500。
  • res.headers:响应头。
  • res.body:响应正文。

响应状态代码

响应状态代码是一个数字,用于指示请求的状态。最常见的响应状态代码包括:

  • 200:请求成功。
  • 404:请求的资源不存在。
  • 500:服务器内部错误。

要设置响应状态代码,可以使用 res.statusCode 属性。例如,以下代码设置响应状态代码为 200:

res.statusCode = 200;

响应头

响应头包含有关响应的元数据,例如响应的类型、长度和缓存控制。例如,以下响应头指定响应的类型是 "text/html",长度是 "1024" 字节,并且可以缓存 10 分钟:

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024
Cache-Control: max-age=600

要设置响应头,可以使用 res.setHeader() 方法。例如,以下代码设置响应头的 "Content-Type" 字段的值为 "text/html":

res.setHeader('Content-Type', 'text/html');

响应正文

响应正文是发送给客户端的数据。响应正文可以是文本、HTML、JSON 或任何其他格式的数据。

要设置响应正文,可以使用 res.send() 方法。例如,以下代码发送 "Hello, world!" 文本作为响应正文:

res.send('Hello, world!');

总结

request 对象和 response 对象是 Express 框架中处理 HTTP 请求和响应数据的重要工具。通过理解和使用这两个对象,你可以轻松地构建强大的 Web 应用程序。