跳到主要内容

HTTP 方法与 RESTful API

HTTP 方法

HTTP 方法是指在 HTTP 协议中用于定义客户端与服务器之间如何交互的请求方式,常见的 HTTP 方法有以下几种:

  • GET:用于获取资源,常见用于从服务器请求数据。
  • POST:用于提交数据,通常用于创建新的资源。
  • PUT:用于更新资源,通常用于替换现有资源。
  • PATCH:用于部分更新资源,修改资源的部分数据。
  • DELETE:用于删除资源。
  • OPTIONS:用于获取服务器支持的 HTTP 方法列表。
示例
GET /users      # 获取用户列表
POST /users # 创建一个新用户
GET /users/1 # 获取ID为1的用户
PUT /users/1 # 更新ID为1的用户
PATCH /users/1 # 部分更新ID为1的用户
DELETE /users/1 # 删除ID为1的用户

RESTful API

RESTful API 是基于 REST(Representational State Transfer,表现层状态转移)架构风格的 API,采用标准的 HTTP 方法来对资源进行操作。资源通过 URL 表示,并使用 JSON 作为数据格式。

RESTful API 设计原则

  1. 资源路径:资源通过 URL 定位,URL 应描述资源的含义(使用名词,而非动词)。

例如:/users 表示用户资源,/products 表示产品资源。

  1. HTTP 方法与资源操作对应:
  • GET 用于获取资源。
  • POST 用于创建资源。
  • PUT 或 PATCH 用于更新资源。
  • DELETE 用于删除资源。
  1. 状态码:使用标准的 HTTP 状态码来表示请求结果。

创建 RESTful API

我们可以结合 HTTP 方法来构建完整的 RESTful API。通常,API 设计会涉及资源的 CRUD(创建、读取、更新、删除)操作。

假设我们要为用户管理创建一个 RESTful API,处理用户的 CRUD 操作。

RESTful API 示例
const express = require('express');
const app = express();
let users = [{ id: 1, name: 'John Doe' }]; // 模拟的用户数据

app.use(express.json());

// 获取所有用户
app.get('/users', (req, res) => {
res.json(users);
});

// 获取指定用户
app.get('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ message: 'User not found' });
res.json(user);
});

// 创建新用户
app.post('/users', (req, res) => {
const newUser = {
id: users.length + 1,
name: req.body.name,
};
users.push(newUser);
res.status(201).json(newUser);
});

// 更新用户
app.put('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ message: 'User not found' });
user.name = req.body.name;
res.json(user);
});

// 删除用户
app.delete('/users/:id', (req, res) => {
users = users.filter(u => u.id !== parseInt(req.params.id));
res.status(204).send(); // 成功删除,不返回内容
});

app.listen(3000, () => {
console.log('RESTful API server running on http://localhost:3000');
});

这个 API 可以完成以下操作:

  • GET /users:返回所有用户。
  • GET /users/:id:返回指定 ID 的用户。
  • POST /users:创建新用户。
  • PUT /users/:id:更新指定 ID 用户的信息。
  • DELETE /users/:id:删除指定用户。

状态码与错误处理

在处理 API 请求时,返回合适的 HTTP 状态码能帮助客户端了解操作结果。常见的 HTTP 状态码如下:

  • 200 OK:请求成功。
  • 201 Created:资源创建成功。
  • 204 No Content:请求成功,但没有内容返回(通常用于 DELETE 操作)。
  • 400 Bad Request:客户端请求无效。
  • 401 Unauthorized:用户未授权。
  • 404 Not Found:请求的资源不存在。
  • 500 Internal Server Error:服务器内部错误。