分享一个万能接口(可做mock测试)
要创建一个纯Node.js版本的MongoDB RESTful API接口,可以使用Express框架来简化HTTP请求的处理。以下是一个基本的实现示例:
1. 初始化项目和安装依赖
首先,创建一个新的Node.js项目,并安装必要的依赖:
mkdir mongodb-rest-api
cd mongodb-rest-api
npm init -y
npm install express mongodb body-parser cors
2. 创建服务器和路由
创建一个名为server.js的文件,并设置基本的服务器和路由:
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const cors = require('cors');
const app = express();
const port = process.env.PORT || 3000;
// 连接到MongoDB
mongoose.connect('mongodb://localhost:27017/yourDatabase', {
useNewUrlParser: true,
useUnifiedTopology: true
});
// 中间件
app.use(cors());
app.use(bodyParser.json());
// 路由
app.get('/api/:collection', async (req, res) => {
const collectionName = req.params.collection;
const filter = req.query.filter ? JSON.parse(req.query.filter) : {};
const options = req.query.options ? JSON.parse(req.query.options) : {};
try {
const documents = await mongoose.connection.collection(collectionName).find(filter, options).toArray();
res.json(documents);
} catch (error) {
res.status(500).json({ message: error.message });
}
});
app.post('/api/:collection', async (req, res) => {
const collectionName = req.params.collection;
const document = req.body;
try {
const result = await mongoose.connection.collection(collectionName).insertOne(document);
res.status(201).json(result);
} catch (error) {
res.status(500).json({ message: error.message });
}
});
app.put('/api/:collection', async (req, res) => {
const collectionName = req.params.collection;
const filter = req.body.filter ? JSON.parse(req.body.filter) : {};
const update = req.body.update ? JSON.parse(req.body.update) : {};
try {
const result = await mongoose.connection.collection(collectionName).updateOne(filter, { $set: update });
res.json(result);
} catch (error) {
res.status(500).json({ message: error.message });
}
});
app.delete('/api/:collection', async (req, res) => {
const collectionName = req.params.collection;
const filter = req.body.filter ? JSON.parse(req.body.filter) : {};
try {
const result = await mongoose.connection.collection(collectionName).deleteOne(filter);
res.json(result);
} catch (error) {
res.status(500).json({ message: error.message });
}
});
// 启动服务器
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
3. 运行服务器
使用以下命令启动服务器:
node server.js
注意事项
- 确保你的MongoDB服务正在运行,并且连接字符串(
mongoose.connect中的URL)是正确的。 - 这个示例使用了
mongoose库来简化MongoDB操作,但它不是必需的。你也可以直接使用mongodb原生库。 - CORS(跨源资源共享)被启用,允许所有跨域请求。在生产环境中,你可能需要更精细地控制CORS策略。
- 错误处理是基本的,你可能需要根据实际需求进行改进。
这个示例提供了一个基本的框架,你可以根据实际的业务需求进行扩展和优化。