正如你所见,dolphin-router已经发布在npmjs中心仓库,你能够直接进行安装使用node
# 做为依赖安装 npm i dolphin-router --save
如下操做,须要提早安装node.js运行环境git
# 若是windows,请使用相关shell执行以下命令,如 git bash # 建立目录 mkdir koatest # 初始化node项目,此处为了方便,全部选项直接默认 npm init -y # 安装koa框架和dolphin-router npm i koa dolphin-router --save # ok 项目建立完毕
在上述文件夹 koatest 的根目录建立 index.js 文件github
touch index.js
在文件中添加以下代码web
// 引入koa const Koa = require('koa') // 当你在引入完成dprouter以后,koa-router会被实例化 // dprouter不须要再次 new 建立 const dprouter = require('dolphin-router') // 建立koa应用 const app = new Koa() // 添加路由规则 dprouter.get('/', async (ctx) => { ctx.body = 'Hello Dolphin Router!' }) // 注册路由中间件 app.use(dprouter.routes()).use(dprouter.allowedMethods()) // 启动监听 app.listen(3000, () => { console.log('请访问 http://localhost:3000/ 进行测试...') })
以上示例仅仅将 dolphin-router 看成 koa-router 使用,本中间件倡导的是注释的写法,跟着如下步骤,写一个小demoshell
src/controllers
, 须要注意的是,这是 dolphin-router 的默认路径,应用启动时,路由中间件直接会去解析此路径(配置方式见后文)// 根目录下的index.js代码以下 const Koa = require('koa') const dprouter = require('dolphin-router') const app = new Koa() // 注册路由中间件便可 app.use(dprouter.routes()) app.use(dprouter.allowedMethods()) app.listen(3000, () => { console.log('启动成功') })
DemoController.js的代码以下所示npm
module.exports = class DemoController { /** * @api {get} / hello */ async hello(ctx) { // 简单返回 ctx.body = 'Hello Dolphin Router!' } /** * @api {post} / haha */ async haha(ctx) { ctx.body = ctx.request.body } }
put
方法和delete
方法和上述相似。json
"dolphin": { "controller": { "path": "./src/controller" } }
dolphin,controller以及path三个名称不可变。path的值是相对于项目根目录,controller文件夹所在的相对路径windows
ok,那咱们如何获取query参数、body参数以及文件呢?So easy!api
ctx.query
或者 ctx.request.query
便可获取到针对body
若是咱们使用koa-router,咱们可能须要引入解析body的中间件,好比 koa-body。这是一个优秀的body parser,所以dolphin对此进行了集成,并给了默认的配置。使用时以下:bash
// 在原有的代码基础上增长下面一句 app.use(dprouter.koaBody()) // 结束 app.use(dprouter.routes()) ...
如今你已经能够解析body了,你能够从ctx.request.body获取到你接收到的数据,能够从ctx.request.files获取到你上传的文件。
如下是一个示例
module.exports = class DemoController { /** * 实例的demo无改动 * @api {post} / haha */ async haha(ctx) { // 获取文件地址 console.log(ctx.request.query) console.log(ctx.request.body) console.log(ctx.request.files) ctx.body = ctx.request.body } }
至此,你已经完成了Dolphin-Router的初体验,其余功能正在开发中,后续打算将提供参数校验,api文档自动生成等特性。