木灵鱼儿

木灵鱼儿

阅读:684

最后更新:2021/02/11/ 1:01:40

koa教程2 路由

koa的路由使用,有一个官方的路由插件koa-router,安装这个插件并如下方式使用:

const Koa = require("koa");
const Router = require("koa-router");

const app = new Koa();
const router = new Router();

router.get("/", (ctx, next) => {
  console.log("进入到路由");
})



app.use(router.routes());
app.listen(8080);

引入路由,并new出路由对象,然后路由对象使用对应的前端请求协议方式来监听路由地址,然后有一个回调方法,最后再将这个router对象通过use注册,router使用routes方法将路由全部注册。

router的协议

  1. get 请求 (获取数据)
  2. post 请求 (新增数据,也常用来获取,历史原因,当时没那么多协议扩充)
  3. put 请求(用于更新资源,多次请求只改变一个资源这种)
  4. del 请求(用于删除资源)
  5. patch 请求(是对PUT方法的补充,用来对已知资源进行局部更新,补丁更新)
  6. all 请求 (可用于所有方法匹配)

除了常见的get和post请求,还有一些请求协议,使用方式都是:router.xxx()

多路由处理

主题或模块划分

当一个项目稍微复杂以后,单一的路由结构或者说所有路由都写在一个js文件里面,是很不合理的,所以常用的方式,都是将路由进行划分,相同的部分拆分为一块,也就是主题或模型划分。

比如,访客路由和用户路由,已登录和未登录。甚至还可以更细化,根据不同的功能,主题,逻辑进行划分,具体就要看项目的需要了,这个是一个不断成长的过程,没有谁的路由一开始就是非常完美的,这是一种经验的累积,但是总体来说,他要有一定的范围区域,这样有利于代码的维护和阅读。

api版本

对于一个项目来说,版本是不可避免的一个问题,当一个api进行更新升级时,也许旧版本的api返回的内容与新的不符合,但是用户那边可能还是使用的老版本,所以后端处理不得不进行兼容处理,兼容用户使用的旧版本,开发新的api版本。

常见的做法就是在api上携带版本路径,做法有三种:

  1. api路径:api/v1/xxx/xx
  2. 查询参数:api/xxx/xx?version=1
  3. header:在头信息里面携带版本号

一般来说,兼容三个版本已经是足够了,因为兼容的越多,代码量也越多,维护成本也越大。

那么后端如何进行多个版本之间的兼容,上面的方法只是前端请求时告诉后端我请求的api版本,后端的话,建议是不同的api版本采用不同的路由监听,尽量不要写在一个路由里面,一是代码一多,维护阅读不便,二是写代码有一个原则:修改代码尽量少或者不做,对代码的扩展可以开放;这样做有有一个好处,就是在不影响旧代码的情况下,新的功能依旧可以使用实现。不会影响原来的功能。

拆分

我们将相同主题的路径拆分为一个js文件,自己引入router对象,然后再导出,最后再app.js文件中引入,统一激活。

路由文件1:

const Router = require("koa-router");
const router = new Router();


router.get("/test1", (ctx, next) => {
  ctx.body = "test1";
});


module.exports = router.routes();

路由文件2:

const Router = require("koa-router");
const router = new Router();


router.get("/test2", (ctx, next) => {
  ctx.body = "test2";
});


module.exports = router.routes();

主文件激活:

const Koa = require("koa");
const app = new Koa();



app.use(require("./router/test1")).use(require("./router/test2"));
app.listen(8080);

省点事就不用再const xxx = require()了,反正直接导出的就是routes。

版权申明

本文系作者 @木灵鱼儿 原创发布在木灵鱼儿 - 有梦就能远航站点。未经许可,禁止转载。

关于作者

站点职位 博主
获得点赞 0
文章被阅读 684

相关文章