Koa

yuhuo2022-03-28开发库NodeJs库
参考链接

指南

安装

npm install koa  
npm install @koa/cors @koa/router koa-bodyparser

构建服务

const Koa = require("koa");
const cors = require("@koa/cors");
const bodyParser = require("koa-bodyparser");
const koaStatic = require("koa-static");

// 初始化 Koa 应用实例
const app = new Koa();

// 注册cors,bodyparser中间件
app.use(cors());
app.use(bodyParser());

// 自定义中间件
app.use(async (ctx, next) => {
    console.log("中间件:第一阶段");
    // 错误处理
    try {
        await next();
    } catch (err) {
        // 只返回 JSON 格式的响应
        ctx.status = err.status || 500;
        ctx.body = { message: err.message };
    }
    console.log("中间件:第二阶段");
});

// 设置静态资源目录
// 通过 http://localhost:3000/img/a.jpg 直接访问 topic/koa/public/img/a.jpg
app.use(koaStatic("topic/koa/public"));

// 响应所有请求
app.use((ctx) => {
    ctx.body = "Hello Koa!";
    console.log("路由处理");
    throw new Error("自定义错误");
});

// 运行服务器
app.listen(3000, () => {
    console.log(`Example app listening on port 3000`);
});

路由组

const router = new Router();

router.get("/get", (ctx) => {
    ctx.body = "get";
});
router.post("/post", (ctx) => {
    ctx.body = "post";
});
router.put("/put", (ctx) => {
    ctx.body = "put";
});
router.delete("/delete", (ctx) => {
    ctx.body = "delete";
});
router.all("/all", (ctx) => {
    ctx.body = {all: true};
});

app.use(router.routes()).use(router.allowedMethods());

对象

ctx

属性

属性类型描述
requestobjectrequest 对象
responseobjectresponse 对象
urlstring相当于 ctx.request.url
pathstring相当于 ctx.request.path
bodystring相当于 ctx.response.body
statusstatus相当于 ctx.response.status

方法

属性描述
throw(status: number, message?: string)跳过后续所有流程,直接返回异常状态码和信息
render(view: string, options?: object)渲染并返回HTML代码(示例见:HandleBars
Last Updated 2024/3/14 09:51:53