💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 入口 ``` 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-router | npm install koa-router | 提供路由功能,帮助你定义和处理路由 | 在需要处理多个路由的Web应用中 | | koa-bodyparser | npm install koa-bodyparser | 解析HTTP请求体,可以解析JSON、表单数据等 | 在需要处理用户提交的数据的Web应用中 | | koa-static | npm install koa-static | 托管静态文件,如HTML、CSS、JavaScript文件和图片等 | 在需要提供静态资源访问的Web应用中 | | koa-session 或 koa-cookie | npm install koa-session或npm install koa-cookie | 处理会话和Cookie,可以帮助你实现用户认证和授权 | 在需要用户登录和权限控制的Web应用中 | | koa-logger | npm install koa-logger | 记录请求日志,可以帮助你调试你的应用 | 在需要记录和查看请求日志的Web应用中 | | koa-json | npm install koa-json | 美化JSON响应 | 在需要返回格式化的JSON数据的Web应用中 | | koa-compress | npm install koa-compress | 压缩HTTP响应,可以帮助你提高应用的性能 | 在需要提高响应速度和减少网络传输量的Web应用中 | | koa-helmet | npm 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作为模板引擎。