RESTful API 是一种常见的 Web API 设计风格,它使用 HTTP 协议中的 GET、POST、PUT、DELETE 等方法来实现对资源的操作。在 Web 开发中,使用 RESTful API 可以让前后端分离,提高系统的可扩展性和可维护性。本文将介绍如何使用 Node.js 搭建 RESTful API。
准备工作
在开始搭建 RESTful API 之前,需要安装 Node.js 和 npm。Node.js 是一种基于 Chrome V8 引擎的 JavaScript 运行环境,可以用于开发服务器端应用程序。npm 是 Node.js 的包管理工具,可以用于安装和管理 Node.js 模块。
安装完成 Node.js 和 npm 后,可以使用以下命令检查版本:
node -v npm -v
如果输出了版本号,则表示安装成功。
创建项目
首先,需要创建一个项目目录,并在其中初始化 npm:
mkdir my-api cd my-api npm init -y
该命令将在当前目录下创建一个名为 my-api 的项目,并自动生成 package.json 文件。
安装依赖
使用 npm 安装需要的依赖:
npm install express body-parser mongoose --save
- express:用于创建 Web 服务器和路由。
- body-parser:用于解析 HTTP 请求体中的 JSON 数据。
- mongoose:用于操作 MongoDB 数据库。
编写代码
创建服务器
在项目根目录下创建一个名为 index.js 的文件,并编写以下代码:
const express = require('express'); const bodyParser = require('body-parser'); const app = express(); app.use(bodyParser.json()); app.listen(3000, () => { console.log('Server started on port 3000'); });
该代码创建了一个 Express 应用程序,并使用 bodyParser 中间件来解析 HTTP 请求体中的 JSON 数据。然后,启动服务器并监听 3000 端口。
创建路由
在 index.js 中添加以下代码:
const router = express.Router(); router.get('/', (req, res) => { res.send('Hello World!'); }); app.use('/api', router);
该代码创建了一个名为 router 的路由实例,并定义了一个 GET 请求处理程序,用于处理 /api 路径的请求,并返回 "Hello World!"。
连接数据库
在 index.js 中添加以下代码:
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/my-api', { useNewUrlParser: true }); mongoose.connection.on('connected', () => { console.log('Connected to database'); });
该代码使用 mongoose 连接名为 my-api 的 MongoDB 数据库,并在连接成功后输出日志信息。
创建模型
在 models 目录下创建一个名为 user.js 的文件,并编写以下代码:
const mongoose = require('mongoose'); const UserSchema = mongoose.Schema({ name: { type: String, required: true }, email: { type: String, required: true }, password: { type: String, required: true }, date: { type: Date, default: Date.now } }); module.exports = mongoose.model('User', UserSchema);
该代码定义了一个名为 User 的模型,用于操作 users 集合。该模型包含 name、email、password 和 date 四个属性。
实现 CRUD 操作
在 routes 目录下创建一个名为 users.js 的文件,并编写以下代码:
const express = require('express'); const router = express.Router(); const User = require('../models/user'); router.get('/', (req, res) => { User.find() .then(users => res.json(users)) .catch(err => res.status(500).json({ error: err })); }); router.get('/:id', (req, res) => { User.findById(req.params.id) .then(user => res.json(user)) .catch(err => res.status(500).json({ error: err })); }); router.post('/', (req, res) => { const user = new User({ name: req.body.name, email: req.body.email, password: req.body.password }); user.save() .then(user => res.json(user)) .catch(err => res.status(500).json({ error: err })); }); router.put('/:id', (req, res) => { User.findByIdAndUpdate(req.params.id, req.body, { new: true }) .then(user => res.json(user)) .catch(err => res.status(500).json({ error: err })); }); router.delete('/:id', (req, res) => { User.findByIdAndDelete(req.params.id) .then(() => res.json({ message: 'User deleted' })) .catch(err => res.status(500).json({ error: err })); }); module.exports = router;
该代码定义了一个名为 users 的路由实例,并实现了以下 CRUD 操作:
- GET /api/users:获取所有用户。
- GET /api/users/:id:获取指定 ID 的用户。
- POST /api/users:创建新用户。
- PUT /api/users/:id:更新指定 ID 的用户。
- DELETE /api/users/:id:删除指定 ID 的用户。
测试 API
使用 Postman 或其他 HTTP 客户端工具测试 API。
总结
本文介绍了如何使用 Node.js 搭建 RESTful API,并实现了 MongoDB 数据库的连接和 CRUD 操作。在实际项目中,可以根据需求扩展和优化 API 的功能和性能。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/658d94c9eb4cecbf2d389e25