课程名称: 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获取博客列表数据,的一个流程有一定的了解
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦