Luren
Luren是基于Koa一个简单web框架,可以快速方便的生成RESTFUL风格的API,提供依赖注入InversifyJS和RESTFUL API的文档Swagger的支持.Luren是基于Decorator来设置Controller的,所以ts中必须开启decorator支持。Luren在启动时会自动加载工作目录下的boot
, middleware
,controllers
,models
四个目录下的ts/js文件。
src├── boot├── controllers├── middlewares├── models
Controller
Controller提供API的组件,也是Luren中最重要的一个组件,一个controller即代表一个资源,controller中包含多个action,即资源相关的API。下面的controller会生成一个POST /api/v1/demos/foo
的API, 当接受请求时会检查相应的参数,如header,query,body等然后处理之后传递给相应的action函数,在action函数返回结果之后,会将结果根据Response类型进行处理然后返回。
Middleware
Middleware是一个普通函数或者继承Processor或实现IProcessor接口的对象
Models
通过luren-schema对model类进行注解,可在其他地方直接引用该类型, 同时可以链接到相应的DataSource。
@Collection({datasource: 'mongodb', database: 'demo' })@Schema()export default class User { @Prop() public firstName: string @Prop() public lastName: string @Prop({type: 'number', required: true}) public age: number}
Boot
boot文件下包含需要随应用一起启动的内容, 文件以文件名的顺序加载。
依赖注入
Luren支持使用InversifyJS来加载controller
Swagger
luren-swagger可以作为插件加载,会根据controller的注解自动生成Swagger文档。
server.pluginswagger.pluginify
代码示例
// create server with inversify container// set work directoryserver.setWorkDirectory__dirname// set data sourceserver.setDefaultDataSourcedataSource// authenticationserver.setDefaultAuthentication new APITokenAuthentication// serve filesserver.serve'/public', // setup swagger pluginserver.pluginswagger.pluginify // start serverserver.listen3000.thener.info'Server started'}