基础使用
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx, next) => {
const start = Date.now();
await next();
const ms = Date.now - start;
console.log(`${ctx.method} ${ctx.url} - ${ms}ms`);
});
//response
app.use(ctx => {
ctx.status = 200;
ctx.set('Content-type', 'text/plain; charset=utf-8');
ctx.body = 'Hello Koa';
});
app.listen(3000);
// 一些其他的方法
ctx.redirect('/home');
// 相当于
// res.status = 302;
// res.setHeader('Location', '/Home') 三个 API
- use
app.use((ctx, next) => {})
- listen
app.listen(3000);
- callback
该函数内部实现三个功能
- 使用 koa-compose 函数将 middleware 中间件数组转化为中间件 fn;
- 调用 app.createContext 函数。创建 context, request, response 对象,将 request 和 response 挂载在 context 上;把 req 和 res 挂载到三个对象上。
例如: request 的原型对象上部分代码如下
get header(){
return this.req.headers;
}
set header(val){
this.req.headers = val;
}我们现在就可以根据 ctx.request.header 获取 req 的 headers 了。
3. 执行 handleRequest 函数,本质是把组装好的 context 传入中间件 fn 执行。
Koa-router
const Router = require('koa-router');
const router = new Router();
router.get('/', (ctx, next) => {
ctx.body = 'Hello World!';
})
.post('/users', (ctx, next) => {
// ...
})
.put('/users/:id', (ctx, next) => {})
.del('/users/:id', (ctx, next) => {})
.all('/users/:id', (ctx, next) => {});
app.use(router.routes());
app.use(router.allowedMethods()); koa-static
用于处理静态资源的 koa 中间件
const static = require('koa-static');
app.use(static(''public)); koa-body
处理请求的中间件,可以轻松获得请求的内容
const body = require('koa-body');
app.use(body({multipart: true}));
app.use((ctx) => {
console.log(ctx.request.body);
}) 
京公网安备 11010502036488号