Nodejs 一个简单的 Restful API 生成器 restal
Nodejs 一个简单的 Restful API 生成器 restal
这是之前写一个项目用到的小工具,给 API 服务器自动生成 Restful 风格的接口。最近整理出来,写了点测试就放 github 上了。支持的 HTTP 方法有 GET、POST、PUT、PATCH、DELETE,实现的功能其实也很简单,就是基本的 CURD,只不过给标准化了而已。当然还保留 Express 的中间件,如果标准化操作不符合要求可以拦截或进一步操作。
详细的介绍还是看 README 吧,这里贴一下基本用法。
// 在使用前先建立好 express app 和需要用到的 mongoose model
// 引入 Restal 类
const Restal = require(‘restal’)
// 使用 mongoose model 创建一个 Restal 实例,并挂在到对应的 resource uri 上,就会生成对应的 api
const postApis = new Restal(post, ‘/post’)
// 把 api 注入到 express app 中(或者说把路由导入到 express app 里)
postApis.inject(app)
当然,你也可以通过 express 中间件修改默认处理
// ----+----+----+---------+----+----+----
// preHandle -> ... | f2 | f1 | handler | f1 | f2 | ... <- postHandle
// ----+----+----+---------+----+----+----
// 添加预处理中间件拦截或预处理请求
postApis.preHandle(‘get’, (req, res, next) => {
const postModel = postApis.model
const postUri = postApis.uri
// 进行处理,例如权限验证等
// 如果不调用 next()则拦截并阻止了默认处理
// 但你需要自己响应请求
next()
})
// 添加后处理中间件对数据进行后处理
postApis.postHandle(‘get’, (result, req, res, next) => {
const postModel = postApis.model
const postUri = postApis.uri
// 进行处理,例如数据处理等
// 如果添加了后处理中间件,默认处理将不响应请求,并
// 通过 result 参数向后处理中间件传递原响应结果,因此你
// 需要自己响应请求
res.status(200).send(result)
})
Github 地址:https://github.com/Siubaak/restal
代码一般,默默的求 star。
之前写的js<br>/**<br> * eric<br> * 1.0.0<br> */<br><br>// const allow = ['index', 'show', 'create', 'update', 'delete'];<br><br>export default class Base {<br> constructor (router) {<br> this.router = router<br> }<br><br> resources (resource = '', controller = {}, functions = []) {<br> const router = this.router<br><br> const resolve = function (req, res) {<br> res.send('not opened')<br> }<br><br> const {<br> index = resolve,<br> show = resolve,<br> create = resolve,<br> update = resolve,<br> del = resolve<br> } = controller<br><br> router.get(resource, functions, index)<br> router.get(`${resource}/:id`, functions, show)<br> <a target="_blank" href="http://router.post" rel="nofollow noopener">router.post</a>(resource, functions, create)<br> router.put(`${resource}/:id`, functions, update)<br> router.patch(`${resource}/:id`, functions, update)<br> router.delete(`${resource}/:id`, functions, del)<br> return this<br> }<br>}<br>
当然,我可以为你提供一个简单的Node.js Restful API生成器示例,基于一个流行的框架如Express.js。这里是一个基础的例子,展示了如何创建一个简单的Restful API服务。
首先,确保你已经安装了Node.js和npm(Node包管理器)。然后,创建一个新的项目目录并初始化一个新的Node.js项目:
mkdir restal-example
cd restal-example
npm init -y
接下来,安装Express和body-parser(用于解析请求体):
npm install express body-parser
然后,创建一个名为app.js
的文件,并添加以下代码:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = 3000;
app.use(bodyParser.json());
let items = [];
app.get('/items', (req, res) => {
res.json(items);
});
app.post('/items', (req, res) => {
const newItem = req.body;
items.push(newItem);
res.status(201).json(newItem);
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
这个简单的应用定义了两个端点:
GET /items
:返回所有项目。POST /items
:接收一个新的项目并添加到列表中。
最后,运行你的应用:
node app.js
现在,你可以使用Postman或其他HTTP客户端来测试这些API端点。这个示例只是一个起点,你可以根据需要扩展和修改它。