URL 和查询字符串

URL 与查询字符串

URL 层实现了 WHATWG 风格的解析——与浏览器的行为相同——因此从文档中提取的 URL 会以真实用户代理的方式进行解析和规范化。


解析与验证

URL.parse() 解析绝对或相对 URL;URL.can_parse() 在不构建对象的情况下判断其有效性。解析失败会抛出类型化的 URLParseError。

查询字符串

URLSearchParams 读取并编辑查询参数:append()、get()、get_all()、has() 和 delete() 覆盖整个往返过程,保持多值语义。


技巧与最佳实践

  • 在过滤器中使用 can_parse() 进行廉价验证;仅在需要组件时才使用 parse() 构造
  • 记住查询键会重复 — 当参数可能出现多次时使用 get_all()
  • 捕获 URLParseError 而不是使用正则表达式进行预验证

常见问题

问题原因修复
相对 URL 解析失败未提供基准根据 URL.parse() 提供基准
仅返回第一个查询值在重复键上使用了 get()使用 get_all()
组件中的奇怪字符WHATWG 正规化在工作中预期 — 这与浏览器行为相匹配

FAQ

解析是否遵循 WHATWG 标准?

是的 — 规范化和组件拆分镜像浏览器行为。

如何在不解析的情况下检查 URL?

URL.can_parse() 返回有效性而无需对象构造。

我可以就地编辑查询字符串吗?

是的——URLSearchParams 支持 append/get/has/delete 循环往返。


API Reference 摘要

类/方法描述
URL.parse解析 URL
URL.can_parse未构造的有效性检查
URLSearchParams.append添加查询参数
URLSearchParams.get_all键的所有值
URLParseError类型解析失败

另请参阅

 中文