http_lib:纯仓颉标准库 HTTP 封装,HTTP/1 + HTTP/2 + HTTP/3
开源推荐 | 仓颉语言 HTTP 封装库 http_lib 纯标准库实现HTTP/1 HTTP/2 HTTP/3写在前面仓颉编程语言Cangjie作为华为自研编程语言生态正在快速成长。网络编程是绝大多数应用的刚需然而成熟可用的 HTTP 封装库一直是语言生态里的关键缺口。这里介绍一个开源项目http_lib。它是仓颉社区首个完全基于标准库std开发的 HTTP 协议封装库零 stdx 依赖纯仓颉语法实现覆盖 HTTP/1.x HTTP/2 完整协议以及 HTTP/3 类型定义层帧编解码 QPACK 头压缩QUIC 传输层需外部实现同时提供 Server 和 Client 完整能力。项目地址https://atomgit.com/changeden/http_lib一句话概括约 48,000 行纯仓颉源码、1576 个测试全部通过、32 个示例程序。如果你想用仓颉写 HTTP 服务或调用 HTTP API这是目前社区里功能最完整的库。对仓颉生态的意义在 http_lib 出现之前仓颉社区里要做 HTTP 通信要么依赖 stdx 扩展库要么手写 TCP 协议解析。这两种方式各有痛点stdx 并非官方标准库的一部分版本兼容性难以保证手写 TCP 解析则工作量大且容易出错。http_lib 的价值在于纯标准库开发零 stdx 依赖只用仓颉标准库 std 自带的 net / io / collection 等包不依赖任何 stdx 扩展。这意味着只要安装了仓颉 SDK 就能编译使用不存在外部扩展库的版本漂移问题纯仓颉语法实现不使用 C 语言 FFI 调用不内嵌其他语言的运行时完全用仓颉自身的类型系统和特性编写。既保证了代码的可读性和可维护性也为仓颉社区提供了高质量的纯正代码参考高性能Radix Tree 路由、零拷贝字节缓冲、连接池复用、HPACK Huffman 编码等——所有性能敏感路径都用仓颉原生的方式做了优化没有因为纯语法而牺牲效率协议覆盖面最广从 HTTP/1.1 的 keep-alive、chunked 编码、管道化到 HTTP/2 的多路复用、流控制、Server Push再到 HTTP/3 类型定义层QUIC 帧编解码 QPACK 头压缩是目前仓颉社区协议支持最完整的 HTTP 库作为仓颉社区较早实现 HTTP/2 多路复用的开源库之一http_lib 证明了仓颉语言在网络编程领域的可行性——即使没有 C 扩展纯仓颉代码也能写出高性能的协议实现。能做什么http_lib 按模块划分为几大块core— Method、Status、Headers、Version、Date、Error 等 HTTP 核心类型message— Request/Response 的构建与解析、Body 读写、Chunked 编解码、压缩gzip/deflate/brotli、Range 请求、条件请求、缓存控制buffer— 可动态增长的 ByteBuffer用于高效字节操作connection— TCP / TLS 连接层支持 ALPN 协议协商和双向 mTLS 认证router— 基于 Radix Tree 的高性能路由支持:id路径参数和*path通配路由配合洋葱模型的中间件链server— TCP HTTP Server支持 HTTPS、h2c 升级、WebSocketRFC 6455、SSE 推送、文件服务MIME 嗅探 Range 断点续传、虚拟主机、反向代理、优雅关闭client— HTTP Client支持连接池复用、Pipelining 管道化、Digest Auth完整 RFC 7616SHA-256、Cookie 管理、流式响应http2— 完整的 HTTP/2 实现10 种帧类型全支持、HPACK Huffman 编码、多路复用、流控制、优先级调度、Server Push、Extended CONNECT 隧道http3— HTTP/3 类型定义层包含 QUIC 帧编解码和 QPACK 头压缩testutil— TestServer 和 MockConnection方便写测试服务端能力Radix Tree 路由器支持静态路由、:id路径参数、*path通配路由查找 O(k)完整中间件链洋葱模型内置 logging、CORS严格预检校验、安全头HSTS/CSP/X-Frame-Options、IP 速率限制TLS/HTTPS 开箱即用ALPN 协议协商自动选择 h2 或 http/1.1WebSocket 升级RFC 645532 个示例里包含 websocket_chat 聊天室SSE 服务端事件推送HTTP/2 Server Push 主动推送资源虚拟主机和反向代理优雅关闭文件服务MIME 嗅探、Range 请求、条件请求、断点续传流式上传/下载chunked 编码、流式文件传输客户端能力全 HTTP 方法GET / POST / PUT / PATCH / DELETE / HEAD / OPTIONSHTTPS HTTP/2 自动协商支持 h2 ALPN 协商连接池按主机分组空闲超时淘汰PipeliningHTTP/1.1 管道单连接流水线批量请求Digest Auth完整 RFC 7616SHA-256 算法nonce 计数防重放CookieJar 管理Builder 模式链式构建请求流式响应分块读取HTTP/2 完整实现不是半吊子实现。下面这些全部做了帧层DATA / HEADERS / PRIORITY / RST_STREAM / SETTINGS / PUSH_PROMISE / PING / GOAWAY / WINDOW_UPDATE / CONTINUATION 全支持HPACKHuffman 编码/解码动态表 61 条静态表敏感头自动保护不加入动态表多路复用单连接并发流流控制连接级 流级窗口精确跟踪优先级调度PriorityWriteScheduler 权重调度流程安全WINDOW_UPDATE 零增量拒绝、GOAWAY Last-Stream-ID 单调性校验、CONTINUATION 帧序验证Extended CONNECTRFC 8441WebSocket over HTTP/2 隧道HTTP/3进行中底层 QUIC 传输层需外部实现如 quic-go目前库中已完成了 HTTP/3 的类型定义、帧编解码、QPACK 头压缩编码和解码。示例目录里有 http3_server 示例。代码体验服务端 5 行启动import http_lib.server.{HttpServer, HttpServerConfig} import http_lib.router.Router import http_lib.core.{HttpStatus} import http_lib.message.{HttpRequest, HttpResponse} let router Router() router.get(/, { req HttpResponse.text(HttpStatus.OK, Hello, World!) }) HttpServer(handler: router.handler()).listenAndServe(0.0.0.0, 8080)客户端 3 行请求import http_lib.client.HttpClient let client HttpClient() let resp client.get(https://httpbin.org/json) println(resp.bodyAsString()) client.close()构建一个带中间件的 REST API 服务器也是几分钟的事项目 sample/rest_api 里提供了一个完整的 CRUD 示例包含 HSTS CORS 速率限制 访问日志 JSON 请求处理。项目质量源码行数约 48,000 行199 个文件1576 个测试用例全部通过单元测试 集成测试 基准测试32 个示例程序覆盖从 Hello World 到 WebSocket 聊天室、HTTP/2 Push、反向代理等场景编译器 cjc v1.0.5编译优化 -O2静态库输出不依赖 stdx不依赖外部 C 库TLS 通过纯仓颉实现的 jinguissl文档与学习项目 docs 目录包含完整的中英文镜像文档完整使用手册从安装到高级用法Server / Client / Router / HTTP/2 每个模块都有独立文档安全指南HTTPS/TLS 配置、安全中间件使用32 个示例覆盖了几乎所有使用场景直接可运行适合谁用正在用仓颉写后端服务的团队— 直接替代手写 TCP HTTP 解析想评估仓颉语言生态的人— http_lib 是衡量社区成熟度的好样本对 HTTP/2、HTTP/3 协议实现感兴趣的人— 纯仓颉源码阅读学习没有语言障碍需要仓颉 HTTP 客户端的开发者— 开箱即用支持连接池和认证如何参与项目托管在 atomgit搜索 changeden/http_lib 即可找到。欢迎提 Issue 和 PR。最后说两句一个语言生态的成熟离不开基础组件库的积累。http_lib 选择了一条更难的路——不用 stdx、不写 C 扩展完全用仓颉标准库和仓颉语法来实现完整的 HTTP 协议栈。这条路走通了而且走得很扎实。这本身就说明仓颉语言的表达能力已经足够支撑工业级的网络编程。如果你也在用仓颉写东西不妨试试这个库。踩到坑、有想法直接去提 Issue 就好。欢迎转发给身边关心仓颉生态的朋友。

相关新闻

FPGA 上到底有哪些硬件资源?这次一次性整理清楚

FPGA 上到底有哪些硬件资源?这次一次性整理清楚

很多人刚学 FPGA 的时候,容易把注意力全放在 Verilog 语法上。 写 always、写状态机、写计数器,这些当然重要,但如果一直停留在“代码层”,后面就会越来越容易卡住。因为 FPGA 和单片机、Linux 软件不一样,它不是在执行…

2026/7/8 1:05:09 阅读更多 →
3 种注意力机制改进 YOLOv7:在红外目标检测任务中的对比与《红外与激光工程》投稿适配

3 种注意力机制改进 YOLOv7:在红外目标检测任务中的对比与《红外与激光工程》投稿适配

3种注意力机制改进YOLOv7在红外目标检测中的性能对比与期刊适配指南红外目标检测技术在安防监控、自动驾驶和军事侦察等领域具有重要应用价值。随着深度学习的发展,基于YOLO系列算法的红外目标检测方法不断涌现新突破。本文将聚焦YOLOv7模型,深入分析CBA…

2026/7/8 1:03:08 阅读更多 →
C语言-1

C语言-1

1

2026/7/8 1:03:08 阅读更多 →

最新新闻

Zvec:阿里巴巴开源的轻量级进程内向量数据库

Zvec:阿里巴巴开源的轻量级进程内向量数据库

Zvec:阿里巴巴开源的轻量级进程内向量数据库 核心观点 Zvec 是阿里巴巴开源的进程内(in-process)向量数据库,定位轻量、极速、零配置,可直接嵌入应用程序运行。经阿里集团内部生产环境验证,支持低延迟、可…

2026/7/8 2:47:33 阅读更多 →
ResNet-18/34/50/101/152 五款架构 CIFAR-10 训练实测:从 56 层到 1202 层的性能拐点分析

ResNet-18/34/50/101/152 五款架构 CIFAR-10 训练实测:从 56 层到 1202 层的性能拐点分析

ResNet-18/34/50/101/152 五款架构 CIFAR-10 训练实测:从 56 层到 1202 层的性能拐点分析深度残差网络(ResNet)自2015年问世以来,已成为计算机视觉领域的里程碑式工作。何恺明团队提出的残差学习框架,通过引入跨层连接…

2026/7/8 2:45:32 阅读更多 →
SQL 语句从基础到高级

SQL 语句从基础到高级

SQL(Structured Query Language,结构化查询语言)是关系型数据库的标准操作语言,适用于 MySQL、Oracle、SQL Server、PostgreSQL 等主流数据库。本文将由浅入深,从基础语法、核心操作、进阶查询到高级特性、实战优化&am…

2026/7/8 2:45:32 阅读更多 →
曝美团内部全面限用豆包大模型;OpenAI磋商将5%股份送给美国政府;任天堂回应“全员涨薪10%”传闻:这是2023年的事 | 极客头条

曝美团内部全面限用豆包大模型;OpenAI磋商将5%股份送给美国政府;任天堂回应“全员涨薪10%”传闻:这是2023年的事 | 极客头条

一分钟速览新闻点! 消息称美团内部全面限用豆包大模型,此前曾限用阿里云 Qwen 蔚来李斌毕业 30 年后回北大演讲:经历 6 次人生和事业大低谷 支付宝 AI 生活助理「阿宝」正式开启公测,全面取消邀请码限制 脉脉:1-5 月…

2026/7/8 2:43:32 阅读更多 →
使用claude code进行贪吃蛇游戏开发

使用claude code进行贪吃蛇游戏开发

初次使用claude code进行GUI游戏开发。(使用python语言)1.使用powershell打开指定目录2.输入claude命令打开3.输入自然语言描述需求4.根据效果和问题进行问题描述,要求大模型对代码进行修改。结果:

2026/7/8 2:43:32 阅读更多 →
继电器控制:从基础开关到智能灯控系统的完整实现方案

继电器控制:从基础开关到智能灯控系统的完整实现方案

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来看一个很有意思的话题:用继电器控制台灯到底算不算智能灯控系统。很多人觉得这就是个简单的开关控制&#xff0…

2026/7/8 2:41:32 阅读更多 →

日新闻

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: …

2026/7/8 0:00:48 阅读更多 →
MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N1 到批处理的全路径 一、从"功能正确"到"性能可接受"——MyBatis 批量操作的三段式进化 MyBatis 在日常增删改查场景中几乎是无感的——实体映射直观、SQL 控制灵活。但当数据量从千级上升到十万级、百万级,许…

2026/7/8 0:00:48 阅读更多 →
工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

1. 工业负载控制方案概述在工业自动化、电机驱动和照明控制等高需求场景中,可靠地控制电感和电阻负载是核心挑战之一。TPD2015FN作为东芝的8通道高端智能功率开关IC,配合PIC18F45K22微控制器,能够构建一套稳定、高效的负载控制系统。这套组合…

2026/7/8 0:02:48 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻