Fork代码就能玩:chinese-poetry-api开发者指南(Makefile+air热重载+gqlgen代码生成)

发布时间:2026/9/30 17:14:38

Fork代码就能玩:chinese-poetry-api开发者指南(Makefile+air热重载+gqlgen代码生成) Fork代码就能玩chinese-poetry-api开发者指南Makefileair热重载gqlgen代码生成【免费下载链接】chinese-poetry-api 诗泉高性能中国古诗词 API 服务项目地址: https://gitcode.com/gh_mirrors/ch/chinese-poetry-api本文是一份 chinese-poetry-api 开发者指南面向想 Fork 并二次开发这个收录近 40 万首古诗词的 Go 高性能 API 服务的新手讲透 Makefile 常用命令、air 热重载的秒级调试玩法以及 gqlgen 代码生成的标准流程帮你在本地快速跑起项目并贡献代码。这个项目同时提供 REST 和 GraphQL 双接口内置全文搜索、简繁双语、IP 限流等能力。对开发者来说仓库里已经把构建、测试、代码生成全部收敛到几条 make 命令里本地开发体验非常好。下面按跑起来 → 高效改代码 → 加接口 → 避坑的顺序讲。如何克隆 chinese-poetry-api 仓库并初始化开发环境一键克隆仓库注意诗词数据 submodule诗词原始数据放在poetry-data目录是一个 Git submodule见 .gitmodules所以克隆时必须带上子模块参数否则后续处理数据时会发现目录是空的git clone --recurse-submodules --depth1 https://gitcode.com/gh_mirrors/ch/chinese-poetry-api如果仓库已经克隆过可以单独补拉数据git submodule update --init --depth 1安装依赖并查看命令清单项目要求 Go 1.25见 go.mod克隆完成后两条命令即可make deps # 下载依赖并固定 gqlgen 工具版本 make help # 按分类列出全部可用命令make help是这份 Makefile 精心设计的默认入口会把构建、开发、测试、代码质量、Docker、发布命令分门别类打印出来比翻文档快得多。Makefile 命令速查表一键构建、测试与运行服务开发中 90% 的操作对应下面这张表建议直接收藏类别命令作用帮助make help按分类显示全部命令默认目标构建make build构建build/processor和build/server两个二进制构建make clean清理构建产物和数据库文件数据make process-data把poetry-data的 JSON 数据并行处理进 SQLite 数据库运行make run-server构建并启动 API 服务默认 1279 端口测试make test运行全部单元测试测试make coverage生成 HTML 测试覆盖率报告测试make bench/make fuzz基准测试 / 模糊测试如简繁转换、词牌分类质量make fmt/make lint/make tidy格式化、静态检查、整理依赖容器make docker-build/make docker-run构建镜像 / 用 docker-compose.yml 起容器发布make release v1.2.3校验版本号后创建 tag支持 GPG 签名两个容易忽略的细节Makefile 里统一带了CGO_ENABLED1和sqlite_fts5构建标签见 Makefile这是全文搜索FTS5能用的前提。所以永远走 make 命令构建别手动go build否则搜索功能会悄悄失效。本地完整跑通服务的三步走make build→make process-data→make run-server数据库会生成到data/poetry.db简体 繁体双表。air 热重载安装步骤保存代码自动重启改完 internal/api/rest/handler/ 里的 REST 处理器后不想手动重启仓库的make dev目标Makefile已经内置了热重载逻辑安装了 airmake dev直接启动 air保存文件 → 自动重新编译 → 自动重启服务全程秒级未安装 air终端会打印安装提示并自动回退到make run-server的普通模式。安装 air 后进入开发闭环一边跑make dev一边用 requests.http 里现成的请求集合健康检查、搜索、随机诗词、GraphQL 查询等验证改动保存即生效。make devgqlgen 代码生成流程改 GraphQL 接口的标准姿势这个项目的 GraphQL 接口基于 gqlgen 生成核心原则只改 schema 和 resolver永不手改生成文件。整个链条如下步骤文件你做什么1internal/graph/schema.graphqls定义 GraphQL 类型、查询与参数唯一的接口契约入口2gqlgen.yml代码生成配置schema 位置、输出位置、autobind复用database包的模型3命令行执行make graphql-gen触发 gqlgen 生成4internal/graph/generated/generated.go、internal/graph/model/models_gen.go自动生成的可执行 Schema 与数据模型不要手改5internal/graph/schema.resolvers.go手动实现各 Resolver 的业务逻辑查库、统计等6internal/graph/resolver.goResolver 的依赖注入入口持有*database.DB与*database.Repository几个值得学习的工程细节autobind 复用现有模型gqlgen.yml 声明自动绑定internal/database包GraphQL 类型会直接映射到已有的数据库模型避免生成一堆重复 struct工具依赖锁定tools/tools.go 通过 build tag 把 gqlgen 固定为工具依赖go mod tidy不会把它从 go.mod 里删掉——这是 Go 项目的通用技巧本地调试加分项把 config.yaml 中graphql.playground改为true服务启动后会多出一个/playground网页调试面板由 cmd/server/main.go 挂载。常见问题排查清单搜索接口报错或结果异常大概率是绕开 make 手动构建丢了sqlite_fts5标签。用make clean make build重来一次。make dev没有热重载air 未安装按终端提示安装后重试。go mod tidy后构建 GraphQL 报错检查 tools/tools.go 是否被误删它负责固定 gqlgen 工具依赖。服务启动提示没有数据库先执行make process-data生成data/poetry.db容器场景则无需处理scripts/startup.sh 会自动下载并校验数据库文件。/playground打不开config.yaml 里graphql.playground默认是false开发时改为true即可。想压测一下自己的改动tests/load/ 内置了 k6 脚本含安全、极限、尖峰三种档位跑完process-data后直接可用。小结Fork 这个仓库后你的开发主线其实就四条命令make help # 不知道干什么时先看这里 make process-data # 第一次本地准备数据 make dev # 日常air 热重载开发 make graphql-gen # 改了 schema.graphqls 之后Makefile 收敛了构建细节air 省掉了重启等待gqlgen 把 GraphQL 接口的改契约 → 生成 → 实现流程变得可预期。把这三件套跑顺再结合 tests/load/README.md 和 Makefile 的命令说明就可以愉快地给诗泉贡献代码了 【免费下载链接】chinese-poetry-api 诗泉高性能中国古诗词 API 服务项目地址: https://gitcode.com/gh_mirrors/ch/chinese-poetry-api创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/30 17:14:38

ELK7.17生成部署操作手册

ELK 7.17.9 生产集群部署操作手册(3 主 3 从 命令可直接复制执行版)适用版本:Elasticsearch 7.17.9 Kibana 7.17.9 架构:3 主 3 从,安全认证 节点间 SSL 操作系统:CentOS 7 / 8 配套:《ELK7.…

2026/9/30 18:15:07

私域引流宝PHP源码拆解:活码短链卡片多用户部署实战

手里这套私域引流宝PHP源码,是我帮一个做本地生活服务的团队部署的。他们当时的处境非常典型:传单上印着一个固定二维码,结果微信号一换,印出去的几千张传单全部作废;员工各自保存着不同版本的引流链接,发到…

2026/9/30 18:15:07

化工园区安全整治实战:从花架子到真落地的完整方法

干了二十年化工安全,我最怕听到的一句话就是:“整治嘛,就是一阵风,迎检的时候刮一下。”说这种话的人,多半没真正经历过一次把装置停下来、把管线拆开、把反应釜内部翻个底朝天的深度整治。化工园区的安全整治&#xf…

2026/9/30 18:15:07

智能体记忆系统实战:从存储结构、混合检索到MCP与Docker部署

1. 从“hindsight”这个词说起:为什么它值得单独拿出来聊第一次看到“hindsight”作为项目名,我脑子里蹦出来的不是词典释义,而是一个很具体的场景:你在跟一个基于大模型的智能体对话,聊了半小时,它突然问你…

2026/9/30 18:10:06

Cursor工作台:重构开发流程的AI原生代码编辑器

1. 这不是又一个“AI插件”,而是一套重构开发流程的全新工作台 Cursor不是VS Code里装个Copilot插件那么简单——它从底层重写了代码编辑器的交互范式。我第一次用它写一个贪吃蛇小游戏时,直接把传统开发流程砍掉了三分之二:不用手动建项目结…

2026/9/29 11:07:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/29 21:48:03

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 0:01:22

MATLAB+Yalmip+CPLEX实战:综合能源系统优化调度全流程解析

做综合能源系统优化调度这活儿,最痛苦的不是建模本身,而是模型写完之后不知道该怎么求解。看论文里轻飘飘一句“采用Yalmip调用CPLEX求解”,自己上手时却往往卡在环境配置、变量声明、约束写法和求解状态判读上,一耗就是两三天。这…

2026/9/30 0:01:22

I3C比I2C快10倍?RK3576实战:速率、DTS配置与混合总线避坑指南

I3C 比 I2C 快 10 倍?这句话在嵌入式群里传了很久,每次都能吵出一堆截图。前段时间我正好在 RK3576 上调板级 I3C 接口,从控制器寄存器一路摸到 Linux DTS 配置,踩了不少坑,也把这笔速度账彻底算明白了。本文就用 RK35…

2026/9/30 0:01:22

字符串转对象:JSON.parse、new Function与URLSearchParams

“字符串转对象”这几个字,我在技术群里见过的问法至少有十几种:有人拿着一串{a:1,b:2}说 JSON.parse 直接报错,有人要从 URL 里抠出参数,还有人只是想把abc变成能挂属性的东西。js 这门语言里,字符串和对象之间的转换…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/30 18:00:04

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/30 10:28:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑