第3章 Express 的请求与响应(一)

在本章中,我们将详细探讨如何在 Express 中处理 HTTP 请求与响应。这包括解析请求数据、设置响应数据、处理表单数据、使用查询参数等。理解这些内容是开发高效和功能丰富的 Web 应用程序的基础。

1 解析请求数据

在 Express 中,可以通过 req 对象访问 HTTP 请求的各个部分。常见的请求数据包括请求头、查询参数、请求体等。

1.1 请求头

请求头包含关于请求的信息,例如客户端的信息、请求的类型等。可以通过 req.headersreq.get 方法访问请求头。

示例:

app.get('/headers', (req, res) => {
    // 获取所有请求头
    const headers = req.headers;
    res.json(headers);
});

app.get('/user-agent', (req, res) => {
    // 获取特定的请求头
    const userAgent = req.get('User-Agent');
    res.send(`User-Agent: ${userAgent}`);
});

在这里插入图片描述
在这里插入图片描述

代码详解:

  • req.headers:获取所有请求头,返回一个对象。
  • req.get('Header-Name'):获取特定的请求头。
1.2 查询参数

查询参数是 URL 中的键值对,可以通过 req.query 访问。

示例:

app.get('/search', (req, res) => {
    // 获取查询参数
    const query = req.query;
    res.json(query);
});

当用户访问 /search?term=express&sort=desc 时,响应内容将为 {"term":"express","sort":"desc"}
在这里插入图片描述

代码详解:

  • req.query:获取查询参数,返回一个对象。
1.3 路由参数

在路由路径中定义的参数可以通过 req.params 访问。

示例:

app.get('/users/:id', (req, res) => {
    // 获取路由参数
    const userId = req.params.id;
    res.send(`User ID: ${userId}`);
});

当用户访问 /users/123 时,响应内容将为 “User ID: 123”。

代码详解:

  • req.params:获取路由参数,返回一个对象。
1.4 请求体

请求体包含客户端发送的内容,通常用于 POST、PUT 等请求方法。在 Express 中,可以使用中间件解析请求体,如 express.json()express.urlencoded()

解析 JSON 请求体:

app.use(express.json());

app.post('/json', (req, res) => {
    // 获取 JSON 请求体
    const data = req.body;
    res.json(data);
});

解析 URL 编码的请求体:

app.use(express.urlencoded({ extended: true }));

app.post('/form', (req, res) => {
    // 获取表单请求体
    const data = req.body;
    res.json(data);
});

代码详解:

  • express.json():解析 JSON 请求体,将结果存储在 req.body
  • express.urlencoded({ extended: true }):解析 URL 编码的请求体,将结果存储在 req.body

相关推荐

  1. 4 Express路由深入理解(

    2024-07-14 21:18:01       19 阅读
  2. 请求响应方式

    2024-07-14 21:18:01       22 阅读
  3. FastAPI Web框架教程 11 请求响应进阶用法

    2024-07-14 21:18:01       29 阅读
  4. 【Flask 系统教程 3请求响应

    2024-07-14 21:18:01       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 21:18:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 21:18:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 21:18:01       58 阅读
  4. Python语言-面向对象

    2024-07-14 21:18:01       69 阅读

热门阅读

  1. 第三方登录、任意用户登录漏洞总结

    2024-07-14 21:18:01       19 阅读
  2. 关于RiboSeq分析流程的总结

    2024-07-14 21:18:01       20 阅读
  3. T113-i 高清倒车支持解串器MAX96708驱动

    2024-07-14 21:18:01       22 阅读
  4. 【MySQL】9.表的内外连接

    2024-07-14 21:18:01       21 阅读
  5. 代码随想三刷图论篇1

    2024-07-14 21:18:01       18 阅读
  6. redux & react-redux结合使用 2024

    2024-07-14 21:18:01       22 阅读
  7. python热门面试题三

    2024-07-14 21:18:01       23 阅读
  8. C++字符串String和字符串字面量String Literals

    2024-07-14 21:18:01       21 阅读
  9. .NET MAUI开源架构_3..NET MAUI 提供的内容

    2024-07-14 21:18:01       23 阅读
  10. .NET MAUI开源架构_4..NET MAUI 应用支持的平台

    2024-07-14 21:18:01       19 阅读