middleware.js
const Koa = require("koa");
const app = new Koa();
const middleware = function async(ctx, next) {
console.log(`this is a middleware!`);
console.log(ctx.request.path);
// next();
};
const middleware1 = function async(ctx, next) {
console.log(`this is a middleware1!`);
console.log(ctx.request.path);
next();
console.log(`this is a middleware1 ending!`);
};
const middleware2 = function async(ctx, next) {
console.log(`this is a middleware2!`);
console.log(ctx.request.path);
next();
console.log(`this is a middleware2 ending!`);
};
app.use(middleware1);
app.use(middleware2);
app.use(middleware);
app.listen(3000);
index.js
const Koa = require("koa");
const Router = require("koa-router");
const cors = require("@koa/cors");
const koaBody = require("koa-body");
const json = require("koa-json");
const app = new Koa();
const router = new Router();
router.prefix("/api");
router.get("/", (ctx) => {
console.log(ctx);
console.log(ctx.request);
ctx.body = "hello koa";
});
router.get("/api", (ctx) => {
// console.log(ctx);
// console.log(ctx.request);
const params = ctx.request.query;
console.log(params);
// ctx.body = "hello Api";
ctx.body = {
name: params.name,
age: params.age,
};
});
router.get("/async", async (ctx) => {
ctx.body = await new Promise((resolve) => {
setTimeout(() => {
resolve("hello async 2s later");
}, 2000);
});
});
router.post("/post", async (ctx) => {
let { body } = ctx.request;
console.log(body);
console.log(ctx.request);
ctx.body = {
...body,
};
});
app.use(koaBody());
app.use(cors());
app.use(json({ pretty: false, param: "pretty" }));
// request, method, respond
// api url function router
// ctx, async
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000);
package.json
{
"name": "resource",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "webpack"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@koa/cors": "^3.1.0",
"koa": "^2.13.0",
"koa-body": "^4.2.0",
"koa-router": "^9.4.0"
},
"devDependencies": {
"koa-json": "^2.0.2"
}
}