Koa 是 基于Node.js平台的下一代Web开发框架(上一代 就是 Express)。
import Koa from 'koa';
import { PORT, HOST } from './config/system.mjs';
const app = new Koa();
app.use((ctx) => {
ctx.body = 'Hello, Koa.';
});
app.listen(PORT, HOST, () => {
console.log(`服务已启动,URL地址为:${'http://' + HOST + ':' + PORT}`);
});
引入 Koa 类后,通过 new Koa()
创建app实例。然后在调用对应listen
方法去监听一个端口号,如果没有报错,即服务启动成功。
然后 app.use()
方法是给Koa应用程序添加中间件。作用是给所有请求响应数据的。
本质 就是 JavaScript函数。会接受一个参数
ctx
,即上下文对象(整合了Node.js中的request和response两个对象)以及 第二个参数next
,即为栈中的下一个中间件函数。
- 可以在整个请求/响应循环周期内 做任何事情。
- 还可以修改ctx对象,比如添加路由间共享的数据等
- 结束请求/响应周期(结束响应)
- 调用下一个中间件
Koa Context 将 node 的
request
和response
对象封装到单个对象中,为编写 Web 应用程序和 API 提供了许多有用的方法。注意:Koa实例app的context属性 是 Context对象的原型。
ctx.query
获取请求URL地址上的查询参数,返回一个Object对象。ctx.body=
设置响应正文,同时会结束请求/响应周期ctx.status=
设置HTTP状态码,比如: ctx.status = 200;
ctx.message=
设置HTTP状态信息ctx.length=
设置 Content-Length 响应头ctx.type=
设置 Content-Type 响应头Koa非常轻量,并没有内置路由的功能。这样就需要我们自己下载路由功能的中间件--
@koa/router
npm install @koa/router
new Router()
创建router实例app.use(router.routes())
将路由功能注入到应用程序中app.use(router.allowedMethods())
router实例的方法
url:对应 客户端的请求地址
middlewares:对应 对此次请求处理的中间价(可以多个)
注意:所有的定义路由的方法 都会返回router实例。在实际开发时,可以选择router实例的连调方式去定义多个路由。
router.get(url, middlewares)
定义一个get请求方法的路由router.post(url, middlewares)
定义一个post请求方法的路由router.put(url, middlewares)
定义一个put请求方法的路由router.delete(url, middlewares)
定义一个delete请求方法的路由
import Router from '@koa/router';
const router = new Router();
// 定义一个 get的请求方法 路由
// 第一个参数: 路由的路径
// 第二个参数:路由处理的中间件
router
.get('/', (ctx) => {
ctx.body = '主页';
})
.get('/about', (ctx) => {
ctx.body = '关于-get';
})
.post('/about', (ctx) => {
ctx.body = '关于-post';
});
export default router;