- ctx.path =>获取请求路径
- ctx.method => 获取请求方法
- ctx.body => 设置返回客户端的数据
const Koa = require('koa')
const app = new Koa()
app.use((ctx, next)=>{
console.log(ctx.path)
console.log(ctx.method)
if(ctx.path === '/classic/latest' && ctx.method === 'GET'){
ctx.body = {
key: 'classic'
}
}
})
app.listen(3000)
当请求接口多的时候,为了避免在中间件中写多个if判断语句,我们要用koa-router,别忘记安装了
koa-router文档
const Koa = require('koa')
const Router = require('koa-router')
const app = new Koa()
const router = new Router()
// 第二个参数也是中间件,所以我们能够使用ctx,next参数
router.get('/classic/latest', (ctx, next)=>{
ctx.body = {
'key': 'classic'
}
})
// 注册中间插件
app.use(router.routes())
app.listen(3000)
- api版本划分,随着业务的变更将api划分成不同的版本
版本号可以放在url路径里面、路径参数、头部携带
将路由文件提取成api文件,然后分别创建v1、v2、v3文件夹,
然后在v1文件夹下创建classic.js和book.js
classic.js
const Router = require('koa-router')
const router = new Router()
router.get('/v1/classic/latest', (ctx, next)=>{
ctx.body = {
key: 'classic'
}
})
module.exports = router
book.js
const Router = require('koa-router')
const router = new Router()
router.get('/v1/book/hot_list', (ctx, next)=>{
ctx.body = {
key: 'book'
}
})
module.exports = router
app.js
const Koa = require('koa')
const classic = require('./api/v1/classic')
const book = require('./api/v1/book')
const app = new Koa()
// 注册中间插件
app.use(classic.routes())
app.use(book.routes())
app.listen(3000)