二、Koa的基本使用
初始化项目
安装依赖
yarn add koa
yarn add nodemon -D简单的Hello World
const Koa = require('koa')
const app = new Koa()
app.use((ctx) => {
ctx.body = 'Hello World'
})
app.listen(3000)nodemon使用了内部安装,因此需要在package.json中写运行脚本才可以使用。
{ "scripts": { "server": "nodemon index.js" } }
路由
一个简单的判断路由路径和请求方法
app.use(async (ctx) => {
if (ctx.url === '/' && ctx.method == "GET") {
ctx.body = '主页'
} else {
ctx.body = '其他页面'
}
})koa-router
安装插件
yarn add koa-router简单使用
const Koa = require('koa')
const Router = require('koa-router')
const app = new Koa()
const router = new Router()
router.get('/', (ctx) => {
ctx.body = '你好'
})
router.post('/users', (ctx) => {
ctx.body = '用户接口'
})
router.get('/users/:id', (ctx) => {
ctx.body = '用户接口' + ctx.params.id
})
app.use(router.routes())
app.listen(3000)如果使用前缀则在创建实例时填入参数即可
const router = new Router({prefix:'/api'})多中间件
// 多中间件
const auth = async (ctx, next) => {
if (ctx.url !== '/user') {
ctx.throw(401)
}
await next()
}
router.get('/users', auth, (ctx) => {
ctx.body = '用户接口'
})allowedMethods
此方法用于options请求
app.user(router.allowedMethods())相应的可以返回405和501
控制器
获取
query或parmasctx.query或ctx.parmas获取请求体
安装插件
yarn add koa-bodyparser注册中间件
const bodyparser = require('koa-bodyparser') app.use(bodyparser())通过
ctx.request.body获取
设置响应头
ctx.set('allo','ab')
参数校验
安装插件
yarn add koa-parameter使用
入口文件注册
const parameter = require('koa-parameter') app.use(parameter(app))控制器中使用
create (ctx) { ctx.verifyParams({ name: { type: 'string', required: true }, age: { type: 'number', required: false } }) }
错误处理
在入口文件添加中间件
app.use(async (ctx, next) => {
try {
await next()
} catch (err) {
ctx.status = err.status || err.statusCode || 500
ctx.body = {
message: err.message
}
}
}) 使用koa-json-error中间件设置错误处理
yarn add koa-json-error注册为中间件使用
const error = require('koa-json-error')
// 默认配置
app.use(error())通过环境变量设置返回格式
// 默认配置
app.use(error({
postFormat: (e, { staack, ...rest }) => process.env.NODE_ENV === 'production' ? rest : { staack, ...rest }
})) 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小康博客!
评论
TwikooDisqusjs











