首页 > 其他分享 >使用zig语言制作简单博客网站(五)编写博客首页数据请求响应代码

使用zig语言制作简单博客网站(五)编写博客首页数据请求响应代码

时间:2024-08-27 23:17:07浏览次数:3  
标签:const 博客 server zig 首页 article import

首页博客列表

前端请求代码

            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;
}

运行测试效果

  • 如图

标签:const,博客,server,zig,首页,article,import
From: https://www.cnblogs.com/tingyublog/p/18383008

相关文章

  • 利用Hexo和Github Pages搭建自己的博客(1)
    前言本文章会同步发表到博主自己的博客,所以如果在博主自己的博客里发现这个文章,请不要惊讶1.准备工具一台Windows7以上的电脑Node.js(建议lts版本)GitHexo一个Github账号和邮箱代码编辑器(强烈建议vscode)一个名字为:username(这里为你的GitHub名称).github.io的仓库2.安装No......
  • Zigbee VS DigiMesh 网络特性对照表
     Zigbee协议DigiMesh协议节点类型协调器,路由器和终端设备同质网络,灵活路由可配置性多重角色定义会导致网络配置不太灵活。每个父设备只能支持数量有限的子设备。可更灵活地扩展网络。简化网络设置。无须考虑网络父/子设备比率。或者,您可以禁用相关设备路由消息的......
  • 【故障公告】博客站点遭遇疑似大规模 CC 攻击
    在上周五12:24-14:05遭遇大规模DDoS攻击后,今天11:40左右开始遭遇疑似大规模CC攻击,明显的特征是有很多来自海外各个国家IP的异常高频次访问请求。虽然我们针对海外访问临时采取了躲避措施,但攻击请求不仅限于海外,我们躲不过去。非常抱歉,这次攻击给大家带来了麻烦,请大家谅解......
  • HTML+CSS+JS 实现淘宝首页官网
    效果展示:完整代码:HTML部分:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport&q......
  • HTML+CSS 公司官网首页 浮动布局!!
    网页展示: HTML部分:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"conte......
  • 个人博客导航如何创建更有个性化?
    个人博客导航如何创建更有个性化?创建个性化博客导航是一个既实用又能体现个人风格的过程。以下是一些步骤和建议,帮助你完成这一过程:一、确定导航需求和内容明确目的:首先,你需要明确博客导航的主要目的是什么,比如是为了方便读者查找特定内容、展示你的博客结构,还是为......
  • 第一篇博客
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13228这个作业的目标建设基础设施:开通博客、Github账号。熟悉博客园的使用和博客的编辑(基于markdown语法)。......
  • 浏览器启动首页被360篡改
    我是永远也不可能用360的(_).!。可能原因:(一)浏览器快捷方式被篡改(二)浏览器启动程序的启动行为被360监听,执行启动浏览器过程中被360进行篡改解决方案一(edge为例):查找edge浏览器的安装路径:右击edge浏览器->属性->快捷方式->起始位置删除桌面的edge快捷图标将edge......
  • WIN10右键菜单:用特定程序打开文件夹-CSDN博客
    用Pycharm、Typora等程序打开文件夹时,通常来说需要先打开特定程序,然后选择打开指定文件夹;或者先打开单个文件,然后打开指定文件夹。这种方式很繁琐,但幸运的是有软件可以改变这一现状。​​Github仓库:https://github.com/BluePointLilac/ContextMenuManagerGitee仓库:http......
  • ZBlog首页与列表页相关模板
    页面公共模板文件模板文件说明header.php公共头部文件footer.php公共尾部文件首页与列表页相关模板模板文件说明index.php首页及列表页主模板文件post-multi.php摘要文章模板post-istop.php置顶文章模板pagebar.php页码模板日志/独......