兼容koa-router的基于koa的路由中间件api,接口详见APIReference支持基于注解的路由编写,易于实现restful风格内置koa-body,易于解析参数安装可以看到npmjs中央仓库已经发布了dolphin-router,可以直接使用#installnpmidolphin-router--savekoa-basedwebdevelopmentexample新建一个koa工程进行如下操作需要提前安装node.js运行环境#如果是windows,请使用相关shell执行如下命令,比如gitbash#创建目录mkdirkoatest#初始化node项目。为了方便,所有选项直接默认为npminit-y#安装koa框架和dolphin-routerpmikoadolphin-router---save#ok项目创建完成后,dolphin-router兼容koa-router示例.在上述文件夹koatest的根目录下创建index.js文件touchindex.js。在文件中加入如下代码//importkoaconstkoa=require('koa')//引入dprouter后,koa-router会被实例化//dprouter不需要再newcreateconstdprouter=require('dolphin-router')//创建koa应用constapp=newKoa()//添加路由规则dprouter.get('/',async(ctx)=>{ctx.body='HelloDolphinRouter!'})//注册路由中间件app.use(dprouter.routes()).use(dprouter.allowedMethods())//开始监听app.listen(3000,()=>{console.log('请访问http://localhost:3000/fortesting...')})Annotation-basedrouting(推荐使用)上面的例子只使用了dolphin-router作为koa-router,这个中间件提倡写注释按照下面的步骤写一个小demo,在根目录下创建路径src/controllers。需要注意的是,这是dolphin-router的默认路径。应用启动时,路由中间件会直接解析这个路径(配置方法见下文)创建文件DemoController.js,这里不需要文件名,扩展名为.js,需要注意的是只有一个类是写在一个Controller中,示例代码如下//根目录下的index.js代码如下constKoa=require('koa')constdprouter=require('dolphin-router')constapp=newKoa()//只注册路由中间件app.use(dprouter.routes())app.use(dprouter.allowedMethods())app.listen(3000,()=>{console.log('启动成功')})DemoController.js的代码如下module.exports=classDemoController{/***@api{get}/hello*/asynchello(ctx){//simplereturnctx.body='HelloDolphinRouter!'}/***@api{post}/haha??*/asynchaha??(ctx){ctx.body=ctx.request.body}}put方法和delete方法同上。如果需要指定项目控制器的路径,可以在package.json中添加几行配置。具体如下:"dolphin":{"controller":{"path":"./src/controller"}}dolphin、controller、path这三个名字是不可变的。path的值是相对于项目根目录的,controller文件夹所在的相对路径就可以了,那我们怎么获取query参数,body参数和文件呢?太简单!HTTP请求参数解析可以通过queryctx.query或者ctx.request.query获取。如果我们使用koa-router,可能需要引入解析body的中间件,比如koa-body。这是一个优秀的bodyparser,所以dolphin已经集成了它并给出了默认配置。用法如下://在原代码的基础上添加如下语句app.use(dprouter.koaBody())//结束app.use(dprouter.routes())...现在可以解析了body,你可以从ctx.request.body中得到你接收到的数据,你可以从ctx.request.files中得到你上传的文件。对于文件,默认会保存到程序的运行目录下。如果koa-body还有其他配置,可以参考koa-body的说明,在app.use(dprouter.koaBody({yourselfoption...}))中进行配置。下面是一个例子module.exports=classDemoController{/***实例的demo没改*@api{post}/哈哈*/asynchaha??(ctx){//获取文件地址console.log(ctx.request.query)console.log(ctx.request.body)console.log(ctx.request.files)ctx.body=ctx.request.body}}至此,你已经完成了初步体验Dolphin-Router,其他功能正在开发中,未来计划提供参数校验、自动生成api文档等功能。
