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的协议
- get 请求 (获取数据)
- post 请求 (新增数据,也常用来获取,历史原因,当时没那么多协议扩充)
- put 请求(用于更新资源,多次请求只改变一个资源这种)
- del 请求(用于删除资源)
- patch 请求(是对PUT方法的补充,用来对已知资源进行局部更新,补丁更新)
- all 请求 (可用于所有方法匹配)
除了常见的get和post请求,还有一些请求协议,使用方式都是:router.xxx()
多路由处理
主题或模块划分
当一个项目稍微复杂以后,单一的路由结构或者说所有路由都写在一个js文件里面,是很不合理的,所以常用的方式,都是将路由进行划分,相同的部分拆分为一块,也就是主题或模型划分。
比如,访客路由和用户路由,已登录和未登录。甚至还可以更细化,根据不同的功能,主题,逻辑进行划分,具体就要看项目的需要了,这个是一个不断成长的过程,没有谁的路由一开始就是非常完美的,这是一种经验的累积,但是总体来说,他要有一定的范围区域,这样有利于代码的维护和阅读。
api版本
对于一个项目来说,版本是不可避免的一个问题,当一个api进行更新升级时,也许旧版本的api返回的内容与新的不符合,但是用户那边可能还是使用的老版本,所以后端处理不得不进行兼容处理,兼容用户使用的旧版本,开发新的api版本。
常见的做法就是在api上携带版本路径,做法有三种:
- api路径:
api/v1/xxx/xx
- 查询参数:
api/xxx/xx?version=1
- 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。
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据