首页博客列表
前端请求代码
Zepto(function ($) {
// 获取首页文章列表
$.ajax({
url: 'http://localhost:5588/api/home/articles',
type: 'GET',
dataType: 'json',
success: function (data) {
console.log(data);
},
error: function (err) {
console.log(err);
}
})
});
后端响应代码
// 首页博客列表
router.get("/api/home/articles", &articleController.getHomeArticles);
- 建立
article_controller.zig
文件,代码如下
const std = @import("std");
const httpz = @import("httpz");
const article_server = @import("../server/article_server.zig");
/// 获取首页文章列表
pub fn getHomeArticles(req: *httpz.Request, res: *httpz.Response) !void {
_ = req;
const articles = try article_server.getHomeArticles();
res.status = 200;
try res.json(.{ .code = 200, .msg = "ok", .data = articles }, .{});
}
- 建立
article_server.zig
文件,代码如下
const std = @import("std");
const database = @import("../database/db.zig");
const ArticleModel = @import("../model/article.zig");
/// 获取首页文章列表
pub fn getHomeArticles() ![]ArticleModel.Article {
var db = try database.OpenDb();
defer db.deinit();
const query =
\\SELECT id, title, description, content, istop, created_at, updated_at FROM article ORDER BY created_at DESC LIMIT 8 OFFSET 0
;
var stmt = try db.prepare(query);
defer stmt.deinit();
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
const allocator = gpa.allocator();
const rows = try stmt.all(
ArticleModel.Article,
allocator,
.{},
.{},
);
return rows;
}
运行测试效果
- 如图
