一个koa的自动路由中间件
发布于 7 年前 作者 tim1020 5048 次浏览 来自 分享

最近需要用到koa做点东西,看到经常被推荐的koa-router使用上有很多不习惯(比如要给每个路径设置路由,指定方法),于是尝试实现了这个自动化的路由中间件(仅仅是实现,提供一点思路,因为我平时不用nodejs,所以是绝对的新手,留意有坑,比如兼容性问题),已上传至 [git仓库] ( https://github.com/tim1020/ec-router)和npm

```npm install ec-router ```

以下是它的功能:

1. 自动规则路由

无需设置路由,自动根椐请求方法,执行controller目录下的控制器和控制器方法,支持RESTful方式,path方式及QueryString方式

a. RESTful方式

GET /user   路由到controller下的user.js,并执行其中的get方法
POST /user 路由到controller下的user.js,并执行其中的post方法

b.Path方式(如果要根椐请求方法处理的,开发者自行处理)

GET /user/list 路由到controller下的user.js,并执行其中的list方法
POST /user/add  路由到controller下的user.js,并执行其中的add方法

c. QuseryString(如果要根椐请求方法处理的,开发者自行处理)

GET /index?c=user&a=list  路由到controller下的user.js,并执行其中的list方法
GET /index?c=user&a=add 路由到controller下的user.js,并执行其中的add方法

2. 自动RESTful服务

支持自动生成RESTful服务,后端存储可选择mysql和mongodb, 你可以不编写业务代码自动实现一个通用的RESTful服务,提供基本的增删改查功能。

当使用type=1时,且配置了dbConf,则开启自动RESTful服务。

当自动路由规则没有匹配时,如果开启了自动RESTful服务,则进入自动服务逻辑,该中间件会根椐请求方法和参数,自动构建对应的MYSQL或MongoDB的查询,并将结果返回。

(如果RESTful服务的需要的逻辑比较复杂,自动的处理逻辑不能满足,则可通过定义对应的控制器和控制器方法来处理,自定义的控制器优先于自动逻辑)

4 回复

你的路由规则匹配有问题,而且你理解的restful也有问题。

https://github.com/koajs/route/blob/master/index.js https://github.com/WhiteHouse/api-standards

@kurten 请指教

@yansong 粗看了一下,大家的出发点一致(约定优于配置,不需要写那些烦人的路由规则),当中有不少值得借鉴的地方,有空再详细研究下。

回到顶部