Koa的使用

Posted 独鹿DT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Koa的使用相关的知识,希望对你有一定的参考价值。

Koa的使用

Koa初体验

安装npm install koa

const Koa = require("koa");
const url = require("url");
const app = new Koa();
// 注册中间件
app.use((ctx, next) => 
  const  pathname, query  = url.parse(ctx.request.url);
  if (pathname === "/login") 
    if (ctx.request.method === "GET") 
      ctx.response.body = "/login GET请求";
    
  
);
app.listen(8000, "localhost", () => 
  console.log("koa初体验开启成功~");
);

Koa中间件:路由的使用

安装npm install koa-router

params和query参数解析

koa-router会自动进行解析

const KoaRouter = require("koa-router");

const userRouter = new KoaRouter( prefix: "/user" );

userRouter.get("/:name", (ctx, next) => 
  console.log(ctx.request.params.name); // fzb
  console.log(ctx.request.query); //  age: '21', height: '188' 
  ctx.response.body = "params-query数据解析~";
);

module.exports = userRouter;

json数据解析

json数据一般是放在body里面的,又要借助另一个工具库 koa-bodyparser

安装npm install koa-bodyparser

// koa注册中间件
const app = new Koa();
const koaBodyParser = require("koa-bodyparser");
app.use(koaBodyParser());

// 路由使用
userRouter.post("/info", (ctx, next) => 
  console.log(ctx.request.body); //  name: 'fzb', age: 21 
  ctx.response.body = "body:json数据解析~";
);

x-www-form-urlencoded数据解析

同json数据解析一样,会自动将解析后的数据放到 ctx.request.body

form-data数据解析

form-data这种传递数据的方式,一般用来上传文件,要借助另一个工具库 koa-multer

安装npm install koa-multer

const koaRouter = require("koa-router");
const multer = require("koa-multer");

// 文件存储的信息
const storage = multer.diskStorage(
  destination: (req, file, cb) => 
    cb(null, "./uploads/avatar/");
  ,
  filename: (req, file, cb) => 
    cb(null, Date.now() + file.originalname);
  ,
);
const uploadAvatar = multer(
  storage,
);
const uploadRoute = new koaRouter( prefix: "/upload" );
uploadRoute.post("/avatar", uploadAvatar.single("avatar"), (ctx, next) => 
  console.log(ctx.req.file); // 文件信息
  ctx.response.body = "上传头像成功~";
);

module.exports = uploadRoute;

Koa数据响应

响应结果

  • 数组
  • 对象
  • null
  • 字符串

响应码

ctx.status = 200;
// or
ctx.response.status = 200;

静态资源服务器

借助另一个工具库 koa-static

安装npm install koa-static

const Koa = require("koa");
const koaStatic = require("koa-static");

const app = new Koa();
app.use(koaStatic("./"));

app.listen(8000, "localhost", () => 
  console.log("服务器开启成功~");
);

错误处理

koa其实继承自emitter,可以发出事件和监听事件

// 路由内处理
userRouter.get("/info", (ctx, next) => 
  ctx.app.emit("error", new Error("测试:错误信息"), ctx);
);
// 其他地处理错误
// 错误处理
app.on("error", (err, ctx) => 
  console.log(err.message);
  ctx.response.body = "出现错误~";
);

以上是关于Koa的使用的主要内容,如果未能解决你的问题,请参考以下文章

Koa-router的基本使用

Koa的使用

Koa的使用

Koa2学习使用koa-router

koa使用koa-passport实现路由进入前登录验证

使用koa-body遇到的坑