使用Node.js与Express构建RESTful API

💖 博客主页:瑕疵的CSDN主页
💻 Gitee主页:瑕疵的gitee主页
🚀 文章专栏:《热点资讯》

使用Node.js与Express构建RESTful API

    • [1 引言](#1 引言)
    • [2 Node.js与Express简介](#2 Node.js与Express简介)
    • [3 安装Node.js与Express](#3 安装Node.js与Express)
    • [4 创建Express项目](#4 创建Express项目)
    • [5 创建API路由](#5 创建API路由)
    • [6 数据存储](#6 数据存储)
    • [7 身份验证与授权](#7 身份验证与授权)
    • [8 错误处理](#8 错误处理)
    • [9 部署应用](#9 部署应用)
    • [10 测试API](#10 测试API)
    • [11 总结](#11 总结)
  • [12 参考资料](#12 参考资料)

1 引言

Node.js是一个开放源代码、跨平台的JavaScript运行环境,用于开发服务器端和网络应用。Express是Node.js的一个流行框架,它简化了构建Web应用和API的过程。本文将详细介绍如何使用Node.js与Express框架来构建一个RESTful API。

2 Node.js与Express简介

Node.js允许使用JavaScript编写服务器端代码,Express则为开发者提供了丰富的特性,如路由、中间件、错误处理等,使开发过程更加简单快捷。

3 安装Node.js与Express

首先,确保你的计算机上已安装了Node.js,然后安装Express。

npm install express

4 创建Express项目

使用Express创建一个新的项目。

node-rest-api/
├── package.json
├── package-lock.json
├── node_modules/
├── .gitignore
├── README.md
├── app.js
└── routes/
    └── api.js

编辑 app.js 文件来初始化Express应用。

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

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

const PORT = process.env.PORT || 3000;

app.listen(PORT, () => {
    console.log(`Server running on port ${PORT}`);
});

5 创建API路由

创建一个API路由来处理HTTP请求。

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

// GET 请求示例
router.get('/', (req, res) => {
    res.status(200).json({ message: 'Welcome to our API!' });
});

module.exports = router;

app.js 中使用这个路由。

const apiRoutes = require('./routes/api');

app.use('/api', apiRoutes);

6 数据存储

使用内存存储来模拟数据持久化。

let items = [
    { id: 1, name: 'Item One' },
    { id: 2, name: 'Item Two' },
];

router.get('/items', (req, res) => {
    res.json(items);
});

router.post('/items', (req, res) => {
    const newItem = req.body;
    items.push(newItem);
    res.status(201).json(newItem);
});

7 身份验证与授权

使用JSON Web Tokens (JWT)来进行身份验证。

npm install jsonwebtoken

// routes/api.js
const jwt = require('jsonwebtoken');
const secretKey = 'yourSecretKey';

function authenticateToken(req, res, next) {
    const authHeader = req.headers['authorization'];
    const token = authHeader && authHeader.split(' ')[1];
    if (token == null) return res.sendStatus(401);

    jwt.verify(token, secretKey, (err, user) => {
        if (err) return res.sendStatus(403);
        req.user = user;
        next();
    });
}

router.use(authenticateToken);

8 错误处理

添加错误处理中间件来捕获和处理错误。

app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).send('Something broke!');
});

9 部署应用

可以使用Heroku或其他云服务提供商来部署你的Node.js应用。

git push heroku master

10 测试API

使用Postman或curl命令来测试API。

curl --location --request POST 'http://localhost:3000/api/items' \
--header 'Content-Type: application/json' \
--data-raw '{"name":"NewItem"}'

11 总结

通过本文,我们介绍了如何使用Node.js与Express框架来构建RESTful API,包括安装Node.js与Express、创建Express项目、创建API路由、数据存储、身份验证与授权、错误处理以及部署应用。掌握了这些基础知识后,你可以开始构建自己的RESTful API了。

12 参考资料

  • [1] Express.js Documentation. (2024). Expressjs.com. Retrieved from [Express.js文档链接]