介绍
RESTful API 是现代互联网应用程序中不可或缺的一部分。在前端开发中,经常需要使用 RESTful API 来获取或更新数据,有时你可能需要自己创建一个 RESTful API 来支持你的应用程序。在本篇文章中,我们将学习如何使用 Node.js 来开发 RESTful API。
准备工作
在开始本教程之前,需要先确保已经安装了以下软件:
- Node.js
- NPM
你可以在 Node.js 官网 上下载最新版本的 Node.js,同时 NPM 也会随着 Node.js 的安装而一同安装。
创建项目
首先,我们需要创建一个新项目并初始化。
在终端中进入待创建的目录,并执行以下命令:
mkdir my-project cd my-project npm init -y
这些命令将创建一个名为 my-project 的新项目,并通过
npm init命令自动生成一个 package.json 文件。安装所需的依赖项:
npm install express morgan body-parser cors --save
我们使用 Express 框架、Morgan 日志中间件、Body Parser 请求体解析中间件和 CORS 中间件来快速构建我们的 RESTful API。
创建路由
接下来我们需要编写路由,来响应来自客户端的请求。在 Express 中,创建一个路由很简单,只需要在一个模块中定义路由规则,然后将该模块导出即可。
在项目根目录下创建一个名为 routes.js 的文件,然后编写以下代码:
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('Welcome to my API!');
});
module.exports = router;这个路由将会响应来自客户端的根路由请求,并发送一个包含 “Welcome to my API!” 的响应。现在我们需要告诉 Express 在访问根路由时使用该路由。
在项目根目录下创建一个名为 server.js 的文件,然后编写以下代码:
// www.javascriptcn.com code example
const express = require('express');
const morgan = require('morgan');
const bodyParser = require('body-parser');
const cors = require('cors');
const routes = require('./routes');
const app = express();
app.use(morgan('tiny'));
app.use(bodyParser.json());
app.use(cors());
app.use('/', routes);
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Listening on port ${port}...`);
});在这个文件中,我们首先导入所需的依赖项。然后我们创建一个 Express 应用程序和一个名为 routes 的路由。我们还使用 Morgan 中间件来记录来自客户端的请求,用 Body Parser 中间件来解析 JSON 格式的请求体,并使用 CORS 中间件来处理来自跨域请求的预请求。最后,我们将路由应用到根路由上,并将监听器设置在指定的端口上。
现在我们启动该应用程序并访问根路由。可以使用以下命令启动该应用程序:
node server.js
用浏览器或 Postman 工具访问 http://localhost:3000,就会看到一个包含 “Welcome to my API!” 的响应。
访问数据库
大多数 RESTful API 都需要与数据库进行交互,以便存储和检索数据。在 Node.js 中,我们可以使用一种称为 MongoDB 的 NoSQL 数据库。
首先,我们需要在 MongoDB 上创建一个数据库和一个集合。可以使用 MongoDB Atlas 免费版或本地安装 MongoDB。
在项目根目录下创建一个名为 models.js 的文件,并编写以下代码:
// www.javascriptcn.com code example
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/my_database', {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => console.log('Connected to MongoDB...'))
.catch(err => console.error('Could not connect to MongoDB...', err));
const schema = new mongoose.Schema({
name: String,
age: Number,
email: String
});
const User = mongoose.model('User', schema);
module.exports = User;这个模块使用 Mongoose 库来连接 MongoDB,并导出一个名为 User 的模型,该模型定义了一个将存储在名为 users 的集合中的用户。我们可以使用该模型来执行数据库操作,例如查询、更新或删除用户。
创建 CRUD API
我们已经创建了一个路由,现在需要使用该路由来创建一个 RESTful API,以便客户端可以使用 HTTP 方法来执行 CRUD(创建、读取、更新、删除)操作。
以下是我们将要编写的路由和方法:
- GET /api/users:获取所有用户。
- GET /api/users/:id:获取指定用户。
- POST /api/users:创建新用户。
- PUT /api/users/:id:更新指定用户。
- DELETE /api/users/:id:删除指定用户。
在项目根目录下创建一个名为 routes.js 的文件,并编写以下代码:
// www.javascriptcn.com code example
const express = require('express');
const router = express.Router();
const User = require('./models');
router.get('/api/users', async (req, res) => {
const users = await User.find();
res.send(users);
});
router.get('/api/users/:id', async (req, res) => {
const user = await User.findById(req.params.id);
res.send(user);
});
router.post('/api/users', async (req, res) => {
const user = new User(req.body);
await user.save();
res.send(user);
});
router.put('/api/users/:id', async (req, res) => {
const user = await User.findByIdAndUpdate(req.params.id, req.body, {
new: true
});
res.send(user);
});
router.delete('/api/users/:id', async (req, res) => {
const user = await User.findByIdAndDelete(req.params.id);
res.send(user);
});
module.exports = router;在这个路由中,我们导入名为 User 的模型,并创建了五个路由方法。这些方法使用 MongoDB 调用模型中的方法来执行 CRUD 操作,然后发送响应到客户端。
测试
现在,我们已经完成了整个 RESTful API 的编写,我们需要测试我们的 API 以确保它能够按预期工作。
我们可以使用 Postman 工具来测试我们的 API。使用以下 URL 和 JSON 格式的请求体创建新用户:
POST /api/users
{
"name": "John Doe",
"age": 30,
"email": "john.doe@example.com"
}使用以下 URL 和 JSON 格式的请求体来更新用户名为 John Doe 的用户:
PUT /api/users/{id}
{
"name": "Jane Doe",
"age": 28,
"email": "jane.doe@example.com"
}使用以下 URL 来获取所有用户:
GET /api/users
使用以下 URL 来获取指定 ID 的单个用户:
GET /api/users/{id}使用以下 URL 来删除指定 ID 的用户:
DELETE /api/users/{id}结语
在本教程中,我们学习了如何使用 Node.js 和 Express 框架来创建 RESTful API。我们还学习了如何使用 MongoDB 和 Mongoose 库来与数据库进行交互,并执行 CRUD 操作。使用这些知识,我们可以编写完整的应用程序并与客户端进行交互。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67cfbb5fe46428fe9eb9efd0