Express 初探 —— 请求对象和响应对象
2024-01-19 00:44:11
在 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 应用程序。