Web 开发基础

person 有无相生    watch_later 2024-08-10 10:16:26
visibility 189    class RESTful    bookmark 专栏

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