这是之前写一个项目用到的小工具,给 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。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.