Web 开发基础

class RESTful

1. 构建 RESTful API

RESTful API 是一种基于 HTTP 协议的接口设计风格,通过 HTTP 方法(GET、POST、PUT、DELETE 等)对资源进行操作。学习构建 RESTful API 的关键在于理解 HTTP 请求的处理、路由、状态码、请求和响应对象。

1.1 HTTP 请求处理

在构建 RESTful API 时,处理 HTTP 请求是核心。请求通常包含以下几个部分:

  • 请求方法:GET(获取资源)、POST(创建资源)、PUT(更新资源)、DELETE(删除资源)等。
  • 请求 URL:指向资源的路径。
  • 请求头:包含元数据,例如 Content-TypeAuthorization
  • 请求体:在 POST 或 PUT 请求中,通常包含要发送到服务器的数据。

1.2 路由

路由是将特定的 HTTP 请求映射到处理函数的机制。不同的路径和方法对应不同的操作。

示例:简单的路由

const express = require('express');
const app = express();

app.get('/api/items', (req, res) => {
    res.send('获取所有物品');
});

app.post('/api/items', (req, res) => {
    res.send('创建一个新物品');
});

app.listen(3000, () => console.log('服务器运行在 http://localhost:3000'));

1.3 状态码

HTTP 状态码用于表示请求的结果:

  • 200 OK:请求成功。
  • 201 Created:资源成功创建。
  • 400 Bad Request:客户端请求有误。
  • 401 Unauthorized:未授权的请求。
  • 404 Not Found:请求的资源不存在。
  • 500 Internal Server Error:服务器错误。

示例:返回状态码

app.get('/api/items/:id', (req, res) => {
    const item = findItemById(req.params.id);
    if (!item) {
        return res.status(404).send('物品未找到');
    }
    res.status(200).json(item);
});

1.4 请求/响应对象

在 Express.js 中,req 对象表示请求,res 对象表示响应。你可以通过 req.body 读取请求体,通过 res.sendres.json 等方法发送响应。

2. Express.js 框架

Express.js 是 Node.js 上最流行的 web 框架,简洁灵活,适合构建 RESTful API。掌握 Express.js 的使用是构建高效 API 的基础。

2.1 使用中间件

中间件是 Express.js 中处理请求的核心概念,可以在处理请求前执行一些操作,如解析请求体、验证用户身份等。

示例:使用中间件

const express = require('express');
const app = express();

// 解析 JSON 请求体
app.use(express.json());

// 自定义中间件:记录请求时间
app.use((req, res, next) => {
    console.log('请求时间:', new Date());
    next();
});

2.2 路由

Express.js 的路由系统允许你将不同的路径和方法与处理函数关联。

示例:定义路由

app.get('/api/users', (req, res) => {
    res.send('获取用户列表');
});

app.post('/api/users', (req, res) => {
    const user = req.body;
    // 创建用户逻辑
    res.status(201).json(user);
});

你可以将路由分组到一个单独的模块中,方便管理:

// routes/users.js
const express = require('express');
const router = express.Router();

router.get('/', (req, res) => res.send('获取用户列表'));
router.post('/', (req, res) => res.status(201).json(req.body));

module.exports = router;

// 在主文件中使用
const userRoutes = require('./routes/users');
app.use('/api/users', userRoutes);

2.3 错误处理

处理错误是构建稳健 API 的关键。Express 提供了一个统一的错误处理机制,可以捕获所有的错误并返回适当的响应。

示例:全局错误处理

app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).send('服务器内部错误');
});

总结

通过学习如何构建 RESTful API 和掌握 Express.js,你将能够设计和实现高效、可扩展的 API。这些技能在现代 web 开发中至关重要,并且是构建后端服务的重要基础。

评论区
评论列表
menu