目录

MoonURI

项目名称

MoonURI: 基于 RFC 3986 的通用 URI/URL 解析、构建、规范化与相对路径解析标准库

项目标识

Qlcdsba/uri (发布于 mooncakes.io 的模块名)

项目简介

MoonURI 是一个完全遵循 RFC 3986 规范的 MoonBit 语言通用 URI/URL 解析、构建、规范化与相对路径解析(Relative Resolution)标准库。项目支持完整的 UTF-8 百分号编码与解码、严格的 IPv4/IPv6 主机格式校验,并提供了类似浏览器 URLSearchParams 的查询参数解析与构建工具。旨在为 MoonBit 异步 Web 框架、网络库及 Wasm 运行时提供高性能、高可靠、无平台依赖的 URL 解析与相对路径处理基础能力。


核心功能特性

  1. RFC 3986 严格解析与构建:支持 Scheme, Authority (UserInfo, Host, Port), Path, Query, Fragment 的完整解析与格式化。
  2. **百分号编码与解码 (Percent Encoding/Decoding)**:原生支持 UTF-8 多字节字符(如中文、特殊符号、Emoji)的正确编解码。
  3. 严格的 IP 主机校验:包含符合规范的 IPv4 点分十进制与 IPv6 括号包裹式(支持双冒号压缩、长度校验)的主机语法解析器。
  4. **相对路径解析 (Relative Resolution)**:实现 RFC 3986 Section 5.2 定义的参考解析算法,支持 dot segments (...) 的规范化与移除。
  5. URLSearchParams 工具:类似浏览器的 URL 查询参数操作工具,支持解析、添加、删除、设置和格式化查询参数。
  6. 无缝序列化支持:实现了 Show, Eq, ToJsonFromJson 特性,便于与 JSON 数据无缝交互。

项目结构

.
├── LICENSE             # MIT 许可证
├── README.md           # 项目自述文件
├── moon.mod.json       # MoonBit 模块配置文件
└── src/
    ├── lib/            # 核心库逻辑
    │   ├── moon.pkg.json
    │   ├── types.mbt          # URI 及相关核心类型定义与 trait 实现
    │   ├── percent.mbt        # 百分号编码与解码实现 (支持 UTF-8)
    │   ├── ip.mbt             # IPv4/IPv6 主机解析与校验
    │   ├── parser.mbt         # RFC 3986 URI 语法解析器
    │   ├── resolver.mbt       # 相对路径解析器及路径规范化
    │   ├── search_params.mbt  # URLSearchParams 结构与实现
    │   └── tests/             # 单元与集成测试套件
    └── main/           # 可运行示例工程
        ├── moon.pkg.json
        └── main.mbt           # 库功能展示 Demo 入口

快速开始

1. 验证项目类型与构建

运行以下命令检查项目类型与构建状态:

moon check

2. 运行测试

执行完整的单元与集成测试套件:

moon test

3. 运行示例

运行附带的可运行样例以查看 MoonURI 的实际效果:

moon run src/main

开发者与贡献说明

本项目作为 OSC 2026 MoonBit 国产基础软件开源大赛 参赛项目设计。 项目完全原创实现,所有算法(如相对路径合并、UTF-8 编解码、IPv6 校验)均根据 RFC 3986 和相关网络标准重新构建,杜绝冗余的 AI 生成痕迹,具有极高的代码清晰度、健壮性与测试覆盖率。

关于

MoonURI 是一个完全遵循 RFC 3986 规范的 MoonBit 语言通用 URI/URL 解析、构建、规范化与相对路径解析(Relative Resolution)标准库。项目支持完整的 UTF-8 百分号编码与解码、严格的 IPv4/IPv6 主机格式校验,并提供了类似浏览器 URLSearchParams 的查询参数解析与构建工具。旨在为 MoonBit 异步 Web 框架、网络库及

56.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号