路由中间件
Koa并没有捆绑任何中间件,路由中间件需要独立安装,使用npm install koa-router安装路由中间件,再创建路由对象实例,此时的路由是一个对象,而中间件是一个方法,所以在调用路由对象的routes()方法即可返回路由中间件
所有路由路径都要以/开头,路由对象的作用就是为了才拆分不同路由,以实现模块化管理,基本使用如下:可以拆分多级路由
const koa = require("koa");
const app = new koa();
const koaRouter = require('koa-router');
const homeRouter = new koaRouter();
homeRouter.get("/index.html", async (ctx, next) => {
ctx.body = "hello";
})
app.use(homeRouter.routes());
app.use(homeRouter.allowedMethods());
app.listen(8000);
console.log('Server running at http://127.0.0.1:8000/');
请求和响应
| 方法名 |
描述 |
router.use([path,]...callback) |
添加路由级别的中间件 |
router.prefix(prefix) |
设置路由的路径前缀路径 |
router.get([path,]...callback) |
get请求方法的中间件 |
router.post([path,]...callback) |
post请求方法的中间件 |
router.put([path,]...callback) |
put请求方法的中间件 |
router.del([path,]...callback) |
del请求方法的中间件 |
router.all([path,]...callback) |
所有请求方法的中间件 |
上下文对象
请求
| 属性或方法 |
描述 |
ctx.query |
请求查询字符串对象 |
ctx.params |
路由参数对象,在请求路径中使用/:id其中id就是一个路由参数,该参数存储在params对象中 |
ctx.request.body |
post请求的请求体,无法直接使用,需要先安装koa-bodyparser包,再post请求之前添加该中间件即可,具体参考下面代码 |
const bodyparser = require("koa-bodyparser");
app.use(bodyparser({
enableTypes:["json", "form", "text"]
}))
响应
| 属性或方法 |
描述 |
ctx.body |
返回的内容主题,可以是字符串,可以是对象格式(会自动转化为json) |
ctx.status |
设置响应状态码 |
ctx.redirect(url) |
重定向 |
ctx.attachment(filename) |
发送附件,即下载文件 |
ctx.cookies.get(name,[options]) |
获取cookie |
ctx.cookies.set(name,value[options]) |
设置cookie |
Comments NOTHING