返回
从头开始使用 Express 编写 CRUD REST API:指南
数据库
2023-12-27 12:42:18
构建现代 Web 应用程序的 RESTful CRUD API
简介
RESTful API 已成为构建现代 Web 应用程序的基石。它们提供了一种标准化的方式来创建、检索、更新和删除数据。在本教程中,我们将使用流行的 Node.js 框架 Express 和 MongoDB 数据库,通过 Mongoose ORM 构建一个完整的 CRUD REST API。
步骤 1:设置
- 安装 Node.js 和 npm
- 创建一个新的 Node.js 项目
- 安装 Express 和 Mongoose
mkdir express-crud-api
cd express-crud-api
npm init -y
npm install express mongoose
步骤 2:数据库模型
使用 Mongoose 定义任务模型:
const mongoose = require('mongoose');
const TaskSchema = new mongoose.Schema({
title: { type: String, required: true },
description: { type: String, required: true },
completed: { type: Boolean, default: false },
});
module.exports = mongoose.model('Task', TaskSchema);
步骤 3:路由
定义 RESTful 路由:
const express = require('express');
const router = express.Router();
const Task = require('../models/Task');
// GET all tasks
router.get('/', async (req, res) => {
try {
const tasks = await Task.find();
res.json(tasks);
} catch (err) {
res.status(500).json({ message: err.message });
}
});
// GET a single task by ID
router.get('/:id', async (req, res) => {
try {
const task = await Task.findById(req.params.id);
if (!task) return res.status(404).json({ message: 'Task not found' });
res.json(task);
} catch (err) {
res.status(500).json({ message: err.message });
}
});
// POST a new task
router.post('/', async (req, res) => {
const task = new Task({
title: req.body.title,
description: req.body.description,
completed: req.body.completed,
});
try {
const savedTask = await task.save();
res.json(savedTask);
} catch (err) {
res.status(500).json({ message: err.message });
}
});
// PATCH an existing task
router.patch('/:id', async (req, res) => {
try {
const task = await Task.findById(req.params.id);
if (!task) return res.status(404).json({ message: 'Task not found' });
Object.assign(task, req.body);
const updatedTask = await task.save();
res.json(updatedTask);
} catch (err) {
res.status(500).json({ message: err.message });
}
});
// DELETE a task
router.delete('/:id', async (req, res) => {
try {
const task = await Task.findById(req.params.id);
if (!task) return res.status(404).json({ message: 'Task not found' });
await task.remove();
res.json({ message: 'Task deleted successfully' });
} catch (err) {
res.status(500).json({ message: err.message });
}
});
module.exports = router;
步骤 4:主应用程序
设置主应用程序:
const express = require('express');
const mongoose = require('mongoose');
const taskRoutes = require('./routes/tasks');
const app = express();
// Connect to MongoDB
mongoose.connect('mongodb://localhost:27017/express-crud-api', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
// Middleware
app.use(express.json());
// Routes
app.use('/api/tasks', taskRoutes);
// Start server
app.listen(3000, () => {
console.log('Server is listening on port 3000');
});
步骤 5:测试 API
- 启动服务器:
node app.js
- 使用 Postman 或类似工具测试端点:
- GET /api/tasks
- GET /api/tasks/:id
- POST /api/tasks
- PATCH /api/tasks/:id
- DELETE /api/tasks/:id
常见问题解答
-
什么是 RESTful API?
RESTful API 遵循代表性状态转移(REST)原则,提供一种标准化的方式来访问和操作数据。 -
为什么使用 Mongoose?
Mongoose 是一个 Node.js ORM,它简化了与 MongoDB 数据库的交互。 -
如何部署 API?
您可以使用像 Heroku 或 AWS 这样的云平台来部署您的 API。 -
如何保护 API 免受未经授权的访问?
您可以使用身份验证和授权机制,例如 JWT 或 OAuth2。 -
如何使用 API 来创建功能齐全的应用程序?
您可以使用 API 作为后端,并将其与前端框架(例如 React 或 Angular)结合起来创建功能齐全的应用程序。