一定要是使用正统的插件:koa-router,npm官方库有很多擦边球插件,一字之差,所以需要注意了。

路由方法

路由方法HTTP方法含义
.get()GET数组在url中,非特殊约定,一般为urlencoding
.post()POST数据在body中
.put()PUT数据在body中,一般用于文件上传
.patch()PATCH数据在body中,一般用于数据更新
.del/delete()DELETE数据在url中,一般用于删除
.all() 处理所有的method请求
.use() 挂在中间件

注意,form表单元素只能提交get和post请求,其他类型的请求需要使用ajax这种方式。

其实get和post就行了,但是还是分出来这么多方法,也是为了语义化吧。

路径写法

路由调用上面的方法,需要填写对应的路径,也就是,其中all和use后面再讲,其他的方法,首个参数就是路径。

  • 字符串 router.get("/xxx"),常见的写法,指定某个路径
  • 数组 router.get(["/xxx","/xxx/xx","/xxx"]) 指定多个路径使用同一个路由
  • 通配符 router.get("*") *表示所有的路径
  • 正则 router.get(/^(index)?/) 利用正则来匹配对应的路径

all和use

all表示的所有路径请求都要经过该router。

router.all(async ctx=>{

});

use则不一样,他一般用于挂载中间件,并且他本身不能直接输出,哪怕你设置了ctx.body,浏览器也不会有内容显示。

所有的路径请求也会经过use的router

router.use(async ctx=>{
  ctx.body = "aaaa";
});

浏览器不会有内容显示。但是这样写,又会有

router.use(async ctx=>{
  ctx.body = "aaaa";
});

router.get("/",aysnc ctx=>{});

这样就可以表示,use设置的body会在下一个路由中生效。

由此可见,use本身没有输出,他的输出需要配合其他路由,所以他本身实际上就是作为一个隐式的路由去计算一些东西,比如用于判断用户是否登录。

use可以通过ctx对象将内容共享给其他路由。

分类: Node 标签: router路由nodekoa

评论

暂无评论数据

暂无评论数据

目录