Skip to content

ExpressJS - HTTP 方法

在 Web 应用程序中,HTTP 方法(或动词)定义了客户端希望对特定资源执行的操作。Express 提供了一种清晰、声明式的方式来处理应用程序中每个路由的不同方法。

虽然有许多 HTTP 方法,但在构建 RESTful API 时,以下是最常用的几种:

方法操作描述
GET检索请求指定资源的表示。GET 请求应该是安全的和幂等的,这意味着它们只检索数据,不产生副作用。
POST创建向指定资源提交一个实体,通常导致服务器上的状态改变或新资源创建。
PUT更新/替换用请求负载替换整个目标资源。如果资源不存在,则可能会创建。
PATCH部分更新对资源应用部分修改。当你只需要更新对象中的几个字段时,这比 PUT 更受推荐。
DELETE删除删除指定资源。

Express 在 app 对象上提供了与每个 HTTP 动词相对应的直接方法:app.get()、app.post()、app.put()、app.patch() 和 app.delete()。

让我们创建一个示例,为根路径 (/) 上的每个常见方法定义一个处理程序。

import express from 'express';
const app = express();
const PORT = 3000;
// 用于解析 JSON 请求体的中间件。这是 `body-parser` 的现代替代方案。
app.use(express.json());
// GET:检索数据
app.get('/', (req, res) => {
res.status(200).json({ message: 'GET request received. Welcome to the API!' });
});
// POST:创建数据
app.post('/', (req, res) => {
console.log('Request body:', req.body);
res.status(201).json({ message: 'POST request received.', data: req.body });
});
// PUT:替换数据
app.put('/', (req, res) => {
res.status(200).json({ message: 'PUT request received. Resource updated.' });
});
// PATCH:部分更新数据
app.patch('/', (req, res) => {
res.status(200).json({ message: 'PATCH request received. Resource partially updated.' });
});
// DELETE:删除数据
app.delete('/', (req, res) => {
res.status(200).json({ message: 'DELETE request received. Resource deleted.' });
});
app.listen(PORT, () => {
console.log(`Server is running at http://localhost:${PORT}`);
});

使用 npm run dev 运行服务器后,您需要一个像 Postman 或 Insomnia 这样的 API 客户端来测试 GET 以外的方法。

  • 测试 GET: 在您的浏览器中打开 http://localhost:3000/。您将看到 GET 请求的 JSON 响应。
  • 测试 POST: 在您的 API 客户端中,创建一个新请求。
    • 将方法设置为 POST。
    • 将 URL 设置为 http://localhost:3000/。
    • 转到 ‘Body’ 选项卡,选择 ‘raw’,然后从下拉列表中选择 ‘JSON’。
    • 输入一个 JSON 对象,例如 { "name": "My New Item" }。
    • 发送请求。您将收到 201 Created 状态和一条确认消息。
  • 测试 PUT、PATCH 和 DELETE: 对其他方法遵循类似的过程。在您的 API 客户端中设置方法类型,并将请求发送到 http://localhost:3000/。您将看到每种方法对应的消息。
  • 忘记 express.json(): 如果您在 POST 或 PUT 请求中尝试访问 req.body 而不使用 app.use(express.json()) 中间件,那么 req.body 将是 undefined。这是初学者非常常见的错误。
  • 将 GET 用于修改状态的操作: GET 请求绝不应修改服务器上的数据。始终使用 POST、PUT、PATCH 或 DELETE 来执行创建、更新或删除资源的操作。