koa搭建node后端项目

入口

const Koa = require("koa");
const app = new Koa();

const bodyParser = require("koa-bodyparser");
app.use(bodyParser());

const UserRouter = require("./routers/User")();
app.use(UserRouter.routes(), UserRouter.allowedMethods());

setTimeout(() => {}, 2000);
app.listen(3001, () => {
    console.log("Server is running at http://localhost:3001");
});

routers/User

const Router = require("@koa/router");// koa 路由
const router = new Router();
// get

/* 
fetch("http://127.0.0.1:3000/users/1?asd=11").then((response) => {
    response.json().then((data) => console.log(1, data));
});
*/
router.get("/users/:id?", async (ctx, next) => {
    // 读取请求头
    let header = ctx.request.headers;
    console.log(header, header.host);
    // {
    //   host: '127.0.0.1:3001',
    //   connection: 'keep-alive',
    //   'cache-control': 'max-age=0',
    //   'sec-ch-ua': '"Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',
    //   'sec-ch-ua-mobile': '?0',
    //   'sec-ch-ua-platform': '"Windows"',
    //   'upgrade-insecure-requests': '1',
    //   'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0',
    //   accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    //   'sec-fetch-site': 'none',
    //   'sec-fetch-mode': 'navigate',
    //   'sec-fetch-user': '?1',
    //   'sec-fetch-dest': 'document',
    //   'accept-encoding': 'gzip, deflate, br, zstd',
    //   'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6'
    // }
    // 127.0.0.1:3001
    let query = ctx.query;
    console.log(query, query.asd);
    let params = ctx.params;
    console.log(params, params.id);
    // 自定义设置响应头
    ctx.set("a", 1);
    // 返回数据体
    ctx.body = {
        a: 1,
        b: 2,
        method: "GET",
        query,
    params,
    };
    next();
});
// post

/* 
fetch("http://127.0.0.1:3000/users/1?asd=11", {
    method: "POST",
    headers: {
        "Content-Type": "application/json",
    },
    body: JSON.stringify({
        name: "John Doe",
        email: "johndoe@example.com",
    }),
}).then((response) => {
    response.json().then((data) => console.log(1, data));
});
*/

router.post("/users/:id", async (ctx, next) => {
    const body = ctx.request.body;
    console.log(body, body.name);
    const query = ctx.query;
    console.log(query, query.asd);
    const params = ctx.params;
    console.log(params, params.id);
    ctx.body = {
        a: 1,
        b: 2,
        method: "POST",
        body,
        query,
        params,
    };
    next();
});
// delete

/* 
fetch("http://127.0.0.1:3000/users/1?AAA=1", {
    method: "DELETE",
    headers: {
        "Content-Type": "application/json",
    },
    body: JSON.stringify({
        name: "John Doe",
        email: "johndoe@example.com",
    }),
}).then((response) => {
    // console.log("response: ", response);
    response.json().then((data) => console.log(1, data));
});
 */
router.delete("/users/:id", async (ctx, next) => {
    let body = ctx.request.body;
    console.log(body, body.name);
    let query = ctx.query;
    console.log(query, query.AAA);
    let params = ctx.params;
    console.log(params, params.id);
    ctx.body = {
        a: 1,
        b: 2,
        method: "DELETE",
        body,
        query,
        params,
    };
    next();
});
// put


router.put("/users", async (ctx, next) => {
    ctx.body = {
        a: 1,
        b: 2,
        method: "PUT",
    };
    next();
});
// patch


router.patch("/users", async (ctx, next) => {
    ctx.body = {
        a: 1,
        b: 2,
        method: "PATCH",
    };
    next();
});

module.exports = () => {
	return router;
};

常用中间件

名称安装命令作用应用场景
koa-routernpm install koa-router提供路由功能,帮助你定义和处理路由在需要处理多个路由的Web应用中
koa-bodyparsernpm install koa-bodyparser解析HTTP请求体,可以解析JSON、表单数据等在需要处理用户提交的数据的Web应用中
koa-staticnpm install koa-static托管静态文件,如HTML、CSS、JavaScript文件和图片等在需要提供静态资源访问的Web应用中
koa-session 或 koa-cookienpm install koa-session或npm install koa-cookie处理会话和Cookie,可以帮助你实现用户认证和授权在需要用户登录和权限控制的Web应用中
koa-loggernpm install koa-logger记录请求日志,可以帮助你调试你的应用在需要记录和查看请求日志的Web应用中
koa-jsonnpm install koa-json美化JSON响应在需要返回格式化的JSON数据的Web应用中
koa-compressnpm install koa-compress压缩HTTP响应,可以帮助你提高应用的性能在需要提高响应速度和减少网络传输量的Web应用中
koa-helmetnpm install koa-helmet增强HTTP响应安全性,设置了许多HTTP头以防止常见的攻击在需要提高Web应用安全性的场景中

cmd命令创建koa+node后端项目

Koa-generate

使用Koa开发后端服务固然方便容易,但是面对中大型项目,手动构建文件目录和一些常见代码是很低效的,因此便有开发者基于Koa开发出来Koa项目生成器–Koa-generate,这个工具可以让开发者快速构建中大型项目的的项目目录结构,加速开发进度;

首先我们需要配置环境,下载该库:
npm install -g koa-generator
命令生成Koa项目:koa2 project-name map-visual //或者 koa2 -e project-name

  • koa2 project-name map-visual:这个命令会创建一个新的Koa项目,使用的模板引擎是默认的jade(也被称为pug)。
  • koa2 -e project-name:这个命令也会创建一个新的Koa项目,但是使用的模板引擎是ejs。-e选项是–ejs的简写,表示使用ejs作为模板引擎。
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值