Nodejs 2 分钟完成文件上传接口,3 分钟实现 CURD 接口,轻量框架 fast-qjs(开源)
什么是 fast-qjs ?它能做什么?
fast-qjs 是一个基于 fastify 框架使用约定式
进行路由约束的轻量框架,完全继承 fastfiy 的优点,当你想要快速实现一个功能模块的 crud ,那么 fast-qjs 就能让你在 10 分钟以内完成
fast-qjs 优点:
- 内置数据库:无需繁琐的数据库配置,即可直接使用。
- 集成 JWT:方便且安全的用户身份验证功能。
- 便捷的文件上传接口:轻松处理文件,自动化存储管理。
- 公共目录支持:提供静态资源的管理和访问。
- 约定式路由管理:简洁的路由设置,高效的资源调度。
项目地址:fast-qjs
下面以 fast-qjs 提供的files
接口进行一个案例
第一步,确保已经安装了nodejs
,终端运行:
npx create-qjs qjs-app
执行成功你将看到如下项目结构
qjs-app/
├── node_modules/ # 依赖包目录
│
├── package.json # 项目配置文件
│
├── package-lock.json # 依赖版本信息
紧接着执行下面的命令
cd qjs-app && npm run start
执行完你将看到如下结构
qjs-app/
│
├── db/
│
├── functions/
│
├── public/
│
├── node_modules/
│
├── package.json
│
├── package-lock.json
现在进入functions
目录,你将看到一个默认的qjs.mjs
文件,根据终端提示你的项目运行在http://localhost:5173
。紧接着你的 api 已经创建,浏览器访问 http://localhost:5173/api/qjs 你将看 qjs.mjs 默认插入数据库的信息
我们打开qjs.mjs
文件你将看到如下信息:
// functions/qjs.mjs
// @see https://github.com/allmors/qjs/ // import qjs from ‘@allmors/qjs/core’;
export default async function (params, ctx) { // const User = await qjs.db.collection(‘user’); // const user = await User.insertOne({ name: “Sam”, email: ‘[email protected]’ })
// or const User = await this.db.collection('user'); const user = await User.insertOne({ name: "Sam", email: '<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a1d2c0cce1c2cec5c8cfc6d2c0ccd3c0d58fc2cecc">[email protected]</a>' }) // ...... return ctx.reply.send({ message: 'Hello from qjs API', method: context.method, params: { ...user } });
}
默认代码不用管,直接粘贴下面代码全部替换
export default async function (params, ctx) {
try {
const { file } = params
let result = {}
if (ctx.method === 'POST') {
const res = await this.files.upload(file)
result = res
}
return ctx.reply.send({
message: 'Hello from qjs API',
method: ctx.method,
result: result
});
} catch (error) {
throw new Error(error)
}
}
现在打开 apifox 或者其它工具,我以 apifox 为例
现在你的文件上传接口已经开发完成,回到你的项目目录你将会看到uploads
,里面就是你上传的文件,你可用通过 nginx 获取 caddy 反代该目录即可访问你的文件,当然了,如果你不想这么麻烦,那么,修改 package.json 中如下配置:
找到QJS_STATIC
,把QJS_STATIC
修改为uploads
即可,然后访问:http:0.0.0.0:5173/public/你的 uploads 目录里面的文件名
比如:http://0.0.0.0:5173/public/61f1adee-08ea-45-1727658693615/deKGMl9.jpg
更多信息请查阅文档fast-qjs
Nodejs 2 分钟完成文件上传接口,3 分钟实现 CURD 接口,轻量框架 fast-qjs(开源)
看作者一直在更新,关注下!
感谢关注
“message”: “Route GET:/apiqjs not found”,
你是如何创建 functions 里面的文件的,如果你要访问 apiqjs ,那应该文件名为:apiqjs.mjs
还应该注意你的 QJS_PREFIX ,看你的错误,我猜测你应该是要访问/api/qjs ,而不是 apiqjs
#6 我觉得应该是 win 的报错 我比较笨 就没研究了
run start 之后
code: ‘ERR_UNSUPPORTED_ESM_URL_SCHEME’
Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol ‘c:’
感谢,确实是 window 环境导致
已修复 window 平台错误
#9 可以了 大佬加油
收到,感谢
修复了,windows 环境没有 unix 那么直接😂
当然可以,下面是一个基于 Node.js 和轻量框架 fast-qjs 实现文件上传和 CURD(创建、读取、更新、删除)接口的简要示例。由于篇幅限制,代码会尽量精简,但功能完整。
文件上传接口
首先,确保你已经安装了 fast-qjs
和必要的中间件:
npm install fast-qjs multer
创建一个简单的服务器并实现文件上传:
const fastqjs = require('fast-qjs');
const multer = require('multer');
const path = require('path');
const app = fastqjs();
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('file'), (req, res) => {
res.json({ file: req.file });
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
CURD 接口
为了简化,假设我们使用一个内存中的对象数组来存储数据:
let data = [];
app.post('/create', (req, res) => {
data.push(req.body);
res.json(data);
});
app.get('/read', (req, res) => {
res.json(data);
});
app.put('/update/:id', (req, res) => {
data[req.params.id] = req.body;
res.json(data);
});
app.delete('/delete/:id', (req, res) => {
data.splice(req.params.id, 1);
res.json(data);
});
这个示例展示了如何使用 fast-qjs
框架快速实现文件上传和基本的 CURD 接口。请根据需要调整代码,如添加更多的验证和错误处理。