
后端Web框架【免费下载链接】drogonDrogon: A C14/17/20 based HTTP web application framework running on Linux/macOS/Unix/Windows项目地址https://gitcode.com/gh_mirrors/dr/drogon点击查看免费下载本指南以 Drogon 仓库根目录的 ChangeLog.md 为骨架系统梳理 Drogon一个运行于 Linux/macOS/Unix/Windows 的 C14/17/20 HTTP Web 应用框架从 1.0.0-beta12019 年到 1.9.132026 年的完整演进脉络。通过对照 lib/inc/drogon、orm_lib/inc/drogon/orm 等源码目录你将掌握框架各版本新增的核心 API 的真实签名与用法、ORM/协程/中间件等关键能力的沉淀过程以及如何依据 ChangeLog 快速定位源码实现。版本时间线与发布节奏ChangeLog 采用 Keep a Changelog 风格每个版本分为API changes list、Changed、Fixed早期版本为Changes/Added三类条目并附有与上一版本的 diff 链接。从版本序列可以清晰看到 Drogon 的演进节奏版本发布时间里程碑主题1.0.0-beta1 ~ beta212019-06 ~ 2020-08框架奠基路由、AOP、ORM、drogon_ctl、流水线优化1.0.02020-09-27首个正式版1.1.0 ~ 1.4.02020-10 ~ 2021-03协程支持1.4.0、Redis 支持1.5.01.5.0 ~ 1.7.52021-04 ~ 2022-02Redis/WebSocket/限流器/会话事件/异步通知1.8.0 ~ 1.8.62022-09 ~ 2023-08流水线模式、请求流、YAML 配置、drogon_test1.9.0-rc.1 ~ 1.9.132023-09 ~ 2026-05中间件、WebDAV、ORM JOIN、when_all 协程门控等当前仓库未发布版本[Unreleased]预告了HttpAppFramework::hasDbClient()与hasFastDbClient()两个新方法。最新版本 1.9.13 深度解析2026-05-06框架层面新增 APIUnreleased 与 1.9.13 最值得关注的是框架运行状态查询能力。在 HttpAppFramework.h 中新增了两个纯虚方法virtual bool hasDbClient(const std::string name default) const 0; virtual bool hasFastDbClient(const std::string name default) const 0;文档注释明确要求“此方法必须在框架 run 之后调用”。它们的用途是查询指定名称的普通数据库客户端与 fast无锁数据库客户端是否已被创建可避免在插件或后续初始化逻辑中盲目调用getDbClient()导致异常适合在应用启动后期做依赖健康检查。从源码结构看这两个方法对应 DbClientManager.h 与 RedisClientManager.h 中客户端池的注册状态。请求对象增强1.9.13 为 HttpRequest.h 新增三组 APIclearHeaders()L163一次性清空请求的全部 HTTP 头部适合在代理/转发场景中基于原始请求构建“干净”的新请求setQueryParameter(key, value)L444与setBodyParameter(key, value)L451分别向请求的 query string 和 body 参数表写入键值对便于在过滤器或 AOP 建议中修改参数后再向下游传递。数据库事务模式BEGIN IMMEDIATE / BEGIN EXCLUSIVE1.9.13 起SQLite 事务支持三种启动模式对应 DbClient.h 中的枚举enum class TransactionMode { Deferred, /// BEGIN — 首次写操作时才加锁默认 Immediate, /// BEGIN IMMEDIATE — 立即获取写锁仅 SQLite Exclusive, /// BEGIN EXCLUSIVE — 立即获取排他锁仅 SQLite };Immediate与Exclusive在写入密集的 SQLite 场景下可以提前锁定、规避“database is locked”竞争窗口。创建事务时可显式传入该模式例如app().getDbClient()-newTransaction(TransactionMode::Immediate)。UploadFile 内存数据构造UploadFile.h 新增了从内存数据直接构造UploadFile的构造函数explicit UploadFile(const void *data, const size_t len, const std::string fileName memory.bin, const std::string itemName file, ContentType contentType CT_APPLICATION_OCTET_STREAM);与原有的“文件路径构造”版本相比该重载允许在不落盘的情况下把缓冲区内容包装成上传文件对象适合内存中生成的报表、图片等响应式文件流。ORM JOIN 支持与代码生成器外键自动检测1.9.13 为 ORM 全面引入了 JOIN 能力。在 BaseBuilder.h 中定义了JoinType枚举InnerJoin、LeftJoin、RightJoin、FullJoin并以JoinClause结构体承载表名与 ON 两侧字段FilterBuilder.h、Mapper.h、CoroMapper.h 均提供innerJoin/leftJoin/rightJoin/fullJoin(table, onLeft, onRight)链式方法最终由 BaseBuilder 拼装出... FROM t1 INNER JOIN t2 ON t1.id t2.user_id形式的 SQL。drogon_ctl 的模型生成器同步支持基于外键的关联自动检测配合 JOIN 可直接在 ORM 层完成多表查询。WebDAV 方法与按请求压缩控制WebDAV 方法HttpMethod枚举新增Propfind、Mkcol、Copy、Move对应字符串PROPFIND、MKCOL、COPY、MOVE见 HttpTypes.h。同时修复了 HttpClient 不发 WebDAV 请求的问题使 Drogon 可用作 WebDAV 客户端/服务端的基础。按请求压缩控制HttpResponse::setAllowCompression(bool)见 HttpResponse.h与allowCompression()使开发者可以对单个响应决定是否启用压缩覆盖全局压缩配置适合对已压缩内容或小体积响应跳过压缩开销。其他值得注意的修复1.9.13 修复清单还覆盖HTTP 日期格式化改为与 locale 无关避免不同语言环境下日期头格式错乱、HTTP 头中非法数字解析、连接数限制 bug、共享库视图加载失败处理、drogon_ctl 在 clang-cl 下的编译、正则 WebSocket 路由的中间件初始化顺序、SharedLibManager用execvp()替换system()消除 shell 注入面等。构建层面为 CMake finder 模块加入了 Homebrew Apple Silicon 路径探测。1.9.x 系列功能演进回顾1.9.0 ~ 1.9.5协程深化与中间件2023-09 ~ 2024-061.9.0-rc.1放弃 C14 构建支持全面转向 C17 起HttpRequest::isHead()保留原始方法信息新增访问路由匹配参数的方法execCommandSync允许省略模板参数引入 Prometheus 插件见 plugins/PromExporter.h。1.9.1自定义错误处理器可拿到HttpRequestPtr新增列自增函数setExceptionHandler改为返回框架引用以支持链式调用自定义会话Custom sessions能力落地。1.9.2集成 spdlog 作为日志后端支持异步发送 chunked 响应drogon_ctl press新增-k选项保活压测。1.9.3新增getParameter()与getOptionalParameter()WebSocket 数据面改用std::string_viewCI 引入 cpplint。1.9.4WebSocket 支持客户端证书WebSocketConnection新增 JSON 发送重载实现数据库断线重连循环。1.9.5支持 PostgreSQL 连接选项WebSocket 控制器支持正则路由新增registerMiddleware方法。其中registerMiddleware见 HttpAppFramework.h配合 HttpMiddleware.h 的HttpMiddlewareBase::invoke(req, nextCb, mcb)接口构成了与过滤器Filter互补的中间件拦截链。1.9.6 ~ 1.9.9请求流与安全加固2024-07 ~ 2025-011.9.6HttpServer支持setsockopt请求流RequestStream支持——服务端可以边收边读请求体见 RequestStream.hMultiPartParser支持 PATCH新增 prometheus 示例examples/prometheus_example。1.9.7协程互斥锁coroutine mutexrequestsBufferSize配置SQLite3 异常类型细化新增运行期热重载 SSL 证书的方法无需重启进程。1.9.8就地 Base64 编解码客户端连接状态检查Hodor插件新增白名单见 plugins/Hodor.hPostgreSQL 转义标识符支持查询参数允许空值drogon_ctl支持发送自定义 HTTP 请求。1.9.9Cookie 新增 Partitioned 标志Cookie.h 的setPartitioned(bool)对应 CHIPS 规范用于第三方场景下的分区存储移除系统 locale 依赖。1.9.10 ~ 1.9.12稳定性与连接管理2025-02 ~ 2026-011.9.10新增setConnectionCallbackORM 查询返回避免多余拷贝quit()线程安全AccessLogger插件新增path_exempt配置见 plugins/AccessLogger.h值为正则或正则数组匹配的路径不记日志。1.9.11execSqlCoro新增重载DbClient.h 与 L249 的 vector 版本构建期间不再写入源码目录drogon_ctl create models新增-o|--output输出目录选项支持 iOS 编译WebSocketMessageParser 支持 continuation frame新增RawParameterSqlBinder.h以向 SQL 注入原始参数新增 CORS 示例examples/cors。1.9.12实现 when_all 协程门控——coroutine.h 中的when_all(tasks...)可并发等待多个 Task模型新增toString方法MySQL ORM 支持无符号整型MySQL 异常错误码透传到SqlError。跨版本能力沉淀按主题纵深HTTP 协议层从早期“支持 HTTP pipelining 优化”1.0.0-beta3到 1.9.13 的 WebDAV 与按请求压缩协议层经历了content-length校验非法值返回 400、chunked 编码请求处理1.0.0-beta19、101 Switching Protocols响应不再携带 content-length1.9.8、TLS 1.0/1.1 默认禁用1.1.0、头部统一小写化与 webp/avif 类型1.4.0、按 Range 发送文件1.7.3、自定义 MIME 类型1.7.3、bro/brotli 压缩1.0.0-beta15/16以及HttpRequest::newFileResponse内存缓冲支持1.5.0。这些能力沉淀在 HttpResponse.cc、StaticFileRouter.cc 等实现中。ORM 与数据库ORM 是演进最密集的模块之一Criteria 从基础比较到Not In1.7.5、not like1.8.0、可选的/||运算符1.9.0QueryBuilder1.8.5与 1.9.13 的 JOIN 体系共同支撑复杂查询SqlBinder支持std::string_view1.8.1、std::optional1.2.0、函数指针绑定修复、非 const 引用参数重载1.7.4。数据库客户端侧MySQL 自动重连1.8.0、PostgreSQL pipeline 模式1.8.0与异步 LISTEN/NOTIFY1.8.3、数据库断线重连循环1.9.4。注意RawParameter用于传入已转义的原始 SQL 片段使用时应自行保证安全。协程支持1.4.0 引入协程此后持续强化async_run1.7.3、switchThreadCoro()/queueInLoopCoro1.8.4、协程过滤器1.8.0、CoroMapper方法链1.7.4 附近、协程互斥锁1.9.7与when_all门控1.9.12。开发协程接口时需注意 ChangeLog 反复提及的边界修复协程帧泄漏、sync_wait/co_future的 use-after-free、awaitable 赋值时协程帧释放、Windows 协程异常等这些修复使 coroutine.h 的语义趋于严谨。中间件、过滤器与插件生态AOP从同步 join point1.0.0-beta7到PreSendingAdvice1.7.0、每个响应可修改的新 join point1.0.0-beta18再到“所有过滤器、AOP 建议与处理器均在 IO 线程内执行”的约束1.8.5。插件AccessLogger1.7.0含path_exempt、Hodor含白名单、RealIpResolver1.9.2 移入 PreRouting 阶段、SlashRemover、SecureSSLRedirector、PromExporter、GlobalFilters1.8.5插件支持无配置文件注册1.8.5且以shared_ptr存储。会话会话事件onSessionStart/onSessionDestroy1.8.3、同站会话 Cookie 选项1.8.0、自定义会话1.9.1。构建、跨平台与工具链ChangeLog 记录了从“修 Windows 编译”到系统化 CI 的过程MSVC/MinGW/MSYS2 兼容修复、OpenBSD/FreeBSD/Android/HaikuOS 实验支持、iOS 编译1.9.11、Apple Silicon Homebrew 路径探测、BUILD_CTL/BUILD_EXAMPLES选项规范化、BUILD_TRANTOR_SHARED更名BUILD_SHARED_LIBS1.8.0、find_package(Drogon)与DrogonConfig.cmake1.0.0-beta6、CPack 生成 .deb/.rpm1.7.2、CPPLINT/clang-format/codespell 进入 CI 质量门禁。drogon_ctl 的模型/视图/控制器生成器也在持续修复如--clear-output1.9.13见 create_model.cc、--path-to-namespace1.1.0、模型生成中的复合主键修复等。如何依据 ChangeLog 定位源码ChangeLog 每一条目都能在源码中找到对应实现推荐检索路径框架 APIHttpAppFramework接口集中在 HttpAppFramework.h实现位于 HttpAppFrameworkImpl.cc请求/响应HttpRequest.h 与 HttpResponse.h实现见 HttpRequestImpl.cc、HttpResponseImpl.ccORMorm_lib/inc/drogon/orm 目录下的 Mapper/FilterBuilder/BaseBuilder/Criteria/SqlBinder插件plugins 目录及 lib/src 中同名实现工具命令drogon_ctl 目录下的 create.cc/press.cc/help.cc 等测试佐证ChangeLog 中“修复”类条目大多伴随 lib/tests/unittests 与 lib/tests/integration_test 的用例更新可交叉验证行为。结语透过 ChangeLog 的 2000 余行记录可以完整还原 Drogon 从 2019 年 beta 到 2026 年 1.9.13 的能力地图协程与异步 I/O 的持续打磨、ORM 查询能力的系统化补全、HTTP/WebSocket 协议细节的严谨修正、跨平台构建的长期投入以及插件/中间件生态的逐步完善。对于使用 Drogon 的开发者ChangeLog 既是升级迁移的索引也是理解框架设计取舍的第一手资料——每个“API changes list”条目都能在 lib/inc/drogon 与 orm_lib 中找到它今日的最终形态。赞分享后端Web框架【免费下载链接】drogonDrogon: A C14/17/20 based HTTP web application framework running on Linux/macOS/Unix/Windows项目地址https://gitcode.com/gh_mirrors/dr/drogon点击查看免费下载相关推荐Cube Playground 版本演进全解从 cubejs-client/playground CHANGELOG 看查询构建器的七年迭代Cube Playground 版本演进全解从 cubejs client/playground CHANGELOG 看查询构建器的七年迭代 package后端数据分析数据可视化数据库doctest 版本演进全史从 CHANGELOG 看 C 测试框架 2.x 系列的迭代脉络doctest 版本演进全史从 CHANGELOG 看 C 测试框架 2.x 系列的迭代脉络 本文以仓库根目录下 CHANGELOG.md https:/测试开发工具AntiMicroX 版本演进全解从十年 CHANGELOG 看手柄映射工具的技术迭代路线AntiMicroX 版本演进全解从十年 CHANGELOG 看手柄映射工具的技术迭代路线 本文以 CHANGELOG.md https://link.git桌面应用GUI 自动化上一篇网盘直链下载助手指南三步获取九大网盘的高速直链下一篇MaaAssistantArknights 一键长草明日方舟日常完整实操指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考