MoonURI 是一个完全遵循 RFC 3986 规范的 MoonBit 语言通用 URI/URL 解析、构建、规范化与相对路径解析(Relative Resolution)标准库。项目支持完整的 UTF-8 百分号编码与解码、严格的 IPv4/IPv6 主机格式校验,并提供了类似浏览器 URLSearchParams 的查询参数解析与构建工具。旨在为 MoonBit 异步 Web 框架、网络库及
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
MoonURI
MoonURI 是一个以 MoonBit 为主要实现语言的 RFC 3986 URI/URI-reference 基础库。它面向 HTTP 客户端、路由器、Wasm 服务和缓存层,提供严格解析、百分号编码、IPv4/IPv6 校验、相对引用解析、规范化、查询参数和 RFC 6570 Level 1 URI Template 扩展。
项目边界
MoonURI 处理 URI 的语法与纯函数式组件操作,不执行 DNS、网络请求、重定向或 SSRF 防护。应用程序仍需自行配置网络 allow-list、重定向策略和证书校验。
URI::validation_issues、is_http_url、is_loopback和redacted用于帮助应用在边界处做明确决策。特性
URLSearchParams:重复键、空值、+、编码、排序、增删改查。安装
在包配置中导入:
最小示例
预期输出:
可运行示例位于
src/main/main.mbt,运行:开发与复现
在仓库根目录执行:
持续集成还会运行
moon run src/main和moon run benchmarks,确保示例输出与基准入口可执行。benchmarks/包含脱敏的真实 URL 形态数据、测试口径和本地基准入口。基准结果与 CPU、MoonBit 版本有关,不作为跨机器绝对性能承诺。开源合规
本项目采用 MIT License,完整文本见根目录
LICENSE。实现为独立 MoonBit 代码;RFC 文本仅作为协议依据,不复制第三方实现代码。测试 URL 均为公开文档中的非凭据示例或脱敏形态,不包含个人数据、访问令牌或商业数据。贡献与发布
提交应描述用户可观察的功能、修复或文档变化。合并前必须通过格式检查、
moon check --deny-warn、构建和测试。发布 mooncakes.io 前请确认moon.mod的模块命名空间、版本、README、LICENSE 与公开仓库状态一致,并先在本地完成moon info差异复核。