koa框架13 路由方法
一定要是使用正统的插件: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对象将内容共享给其他路由。
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据