04-路由中间件

nobility 发布于 2025-08-12 02-Koa2 1180 次阅读


路由中间件

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()); //注册路由中间件
//routes()方法返回路由中间件,即注册路由中间件
app.use(homeRouter.allowedMethods());
//官方推荐在注册路由后使用该方法注册再中间件
//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"]	//可解析的post请求格式
}))

响应

属性或方法 描述
ctx.body 返回的内容主题,可以是字符串,可以是对象格式(会自动转化为json)
ctx.status 设置响应状态码
ctx.redirect(url) 重定向
ctx.attachment(filename) 发送附件,即下载文件
ctx.cookies.get(name,[options]) 获取cookie
ctx.cookies.set(name,value[options]) 设置cookie
加油啊!即便没有转生到异世界,也要拿出真本事!!!\(`Δ’)/
最后更新于 2025-08-12