Kless——一个受 FaaS 启发的框架
Kless
一个受 FaaS 启发的框架,源码总共 60 行,废话不多说了,用法很简单。 欢迎吐槽~
Installation
$ npm i @nswbmw/kless --save
Example
const Kless = require('@nswbmw/kless')
const app = new Kless()
app.register({
name: 'User.getUserById',
handler: async (ctx, next) => {
ctx.body = ctx.query.id
}
})
app.listen(3000)
/*
$ curl localhost:3000/User.getUserById?id=123
123
*/
Validator
const Kless = require('@nswbmw/kless')
const app = new Kless()
app.register({
name: 'User.getUserById',
validate: {
query: {
id: { type: Kless.Types.Number, required: true }
}
},
handler: async (ctx, next) => {
ctx.body = ctx.query.id
}
})
app.listen(3000)
/*
$ curl localhost:3000/User.getUserById
($.query.id: undefined) ✖ (required: true)
$ curl localhost:3000/User.getUserById?id=test
($.query.id: "test") ✖ (type: Number)
$ curl localhost:3000/User.getUserById?id=123
123
*/
More validators usage see another-json-schema.
Array handlers
const bodyParser = require('koa-bodyparser')
const Kless = require('@nswbmw/kless')
const app = new Kless()
app.register({
name: 'User.createUser',
handler: [
bodyParser(),
async (ctx, next) => {
ctx.body = ctx.request.body
}
]
})
app.listen(3000)
Test
$ npm test (coverage 100%)
License
MIT
5 回复
其实现在Faas更急需一个尽可能磨平平台差异的框架或者说工具,现在迁移一个平台也是成本颇高。各大平台的Faas也都不算特别理想,即没有通用规范,伸缩性能也很不理想。 略对目前的Faas失望,目前的Faas还只沦为小公司的下策手段,搬到大平台,可能还有待时日。 不过还是相信Faas的未来,毕竟现在普遍颗粒度都到“微”了,哈哈 好久都没有看到关于Faas的东西了😭 这个框架确实很Faas,哈哈
FAAS 在我们这边应用还是挺多的,云构建/单测/爬虫都会用到。
已 star ,感觉不错
class Kless extends Koa??这…
em…route 写多了, 想直接用方法名调用 感觉 json-rpc 还会火一波. 看 jayson 没有 koa 的 middleware 整了一个 koa-jayson-rpc https://github.com/magicdawn/koa-jayson-rpc