Koa框架

Koa

koa注册的中间件提供了两个参数:
ctx:上下文(Context)对象;
 koa并没有像express一样,将req和res分开,而是将它们作为
ctx的属性;
 ctx代表依次请求的上下文对象;
 ctx.request:获取请求对象;
 ctx.response:获取响应对象;

◼ next:本质上是一个dispatch,类似于之前的next;  后续我们学习Koa的源码,来看一下它是一个怎么样的函数;

Koa框架

Koa中间件

koa通过创建的app对象,注册中间件只能通过use方法:
 Koa并没有提供methods的方式来注册中间件;
 也没有提供path中间件来匹配路径;
◼ 但是真实开发中我们如何将路径和method分离呢?
 方式一:根据request自己来判断;
 方式二:使用第三方路由中间件;

Koa框架

路由的使用

◼ koa官方并没有给我们提供路由的库,我们可以选择第三方
库:koa-router
npm install koa-router

◼ 我们可以先封装一个 user.router.js 的文件:
◼ 在app中将router.routes()注册为中间件:
◼ 注意:allowedMethods用于判断某一个method是否支持:
 如果我们请求 get,那么是正常的请求,因为我们有实
现get;  如果我们请求 put、delete、patch,那么就自动报错:
Method Not Allowed,状态码:405;  如果我们请求 link、copy、lock,那么久自动报错:
Not Implemented,状态码:501;

Koa框架

参数解析:params - query

获取params:

Koa框架

获取query:

Koa框架

参数解析:json

body是json格式:

Koa框架

获取json数据:
 安装依赖: npm install koa-bodyparser;
 使用 koa-bodyparser的中间件;

Koa框架

参数解析:x-www-form-urlencoded

body是x-www-form-urlencoded格式:

Koa框架

获取json数据:(和json是一致的)

安装依赖: npm install koa-bodyparser;
使用 koa-bodyparser的中间件

Koa框架

参数解析:form-data

body是form-data格式

Koa框架

解析body中的数据,我们需要使用multer

安装依赖:npm install koa-multer;
使用 multer中间件;

Koa框架

M ulter上传文件

Koa框架

数据的响应

输出结果:body将响应主体设置为以下之一:

 string :字符串数据
 Buffer :Buffer数据
 Stream :流数据
 Object|| Array:对象或者数组
 null :不输出任何内容
 如果response.status尚未设置,Koa会自动将状态设置为200或204。

请求状态:status

Koa框架

静态服务器

koa并没有内置部署相关的功能,所以我们需要使用第三方库:

npm install koa-static

◼ 部署的过程类似于express:

Koa框架

错误处理

Koa框架

和express对比

◼ 在学习了两个框架之后,我们应该已经可以发现koa和express的区别:
◼ 从架构设计上来说:
◼ express是完整和强大的,其中帮助我们内置了非常多好用的功能;
◼ koa是简洁和*的,它只包含最核心的功能,并不会对我们使用其他中间件进行任何的限制。
 甚至是在app中连最基本的get、post都没有给我们提供;
 我们需要通过自己或者路由来判断请求方式或者其他功能;
◼ 因为express和koa框架他们的核心其实都是中间件:
 但是他们的中间件事实上,它们的中间件的执行机制是不同的,特别是针对某个中间件中包含异步操作时;

上一篇:React 使用 antd 实现按需加载


下一篇:探秘inter()方法