Nodejs 一个简单的 Restful API 生成器 restal

发布于 1周前 作者 nodeper 来自 nodejs/Nestjs

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。


3 回复

之前写的
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端点。这个示例只是一个起点,你可以根据需要扩展和修改它。

回到顶部