课程名称: 2022全新 Node.js+Express+Koa2 开发Web Server博客
课程章节: 6-6 API对接mysql(博客列表)
课程讲师: 双越
课程内容:
修改项目 blog-1 的文件夹。
对获取博客数据的修改,从mysql获取数据
// ./src/controller/blog.js 文件 const { exec } = require("../db/mysql"); // 获取博客列表 const getList = (author, keyword) => { // 1=1(正确) 起到站位作用 let sql = `select * from blogs where 1=1 `; if (author) { sql += `and author='${author}' `; } if (keyword) { sql = `and title like '%${keyword}%' `; } // 倒序排序 sql += `order by createtime desc;`; // 返回 promise return exec(sql); }; module.exports = { getList, };
修改 ./src/routers/blog.js 文件,获取博客列表的接口
// ./src/routers/blog.js const { getList, } = require("../controller/blog.js"); const { SuccessModel, ErrorModel } = require("../model/resModel.js"); // 博客相关接口 const handleBlogRouter = (req, res) => { const method = req.method; // GET POST const id = req.query.id; // 获取博客列表 if (method == "GET" && req.path === "/api/blog/list") { const author = req.query.author || ""; const keyword = req.query.keyword || ""; const result = getList(author, keyword); // 返回 promise return result.then((listData) => { return new SuccessModel(listData, "这是获取博客列表的接口"); }); } }; module.exports = handleBlogRouter;
修改app文件中博客路由的返回值
// ./app.js const qs = require("qs"); // 博客相关接口 const handleBlogRouter = require("./src/router/blog.js"); // 用于处理 post data const getPostData = (req) => { return new Promise((resolve, reject) => { if (req.method !== "POST") { resolve({}); return; } if (req.headers["content-type"] !== "application/json") { resolve({}); return; } let postData = ""; req.on("data", (chunk) => { postData += chunk.toString(); }); req.on("end", () => { if (!postData) { resolve({}); return; } resolve(JSON.parse(postData)); }); }); }; const serverHandle = (req, res) => { // 设置返回格式 res.setHeader("Content-type", "application/json"); // 处理 path const url = req.url; // 获取路由 req.path = url.split("?")[0]; // 获取api // 解析 query req.query = qs.parse(url.split("?")[1]); // 处理post data getPostData(req).then((postData) => { // 保存 post 方式传递的数据 req.body = postData; // 处理 blog 路由 const blogResult = handleBlogRouter(req, res); if (blogResult) { blogResult.then((blogData) => { res.end(JSON.stringify(blogData)); }); return; } }; module.exports = serverHandle; // process.env.NODE_ENV
课程收获:
前端调用一个接口,后端如何从mysql获取博客列表数据,的一个流程有一定的了解