URL解析器

当Webhook出错或跟踪链接携带了错误的参数时,最快的办法就是把URL拆开,逐个部分查看。粘贴任意URL,这个解析器就会把它拆分为各个组成部分:协议、用户名和密码、主机、端口、路径、查询字符串和片段,并把查询字符串展开成一张键值对表格。它在我们的服务器上使用PHP标准的URL解析器运行,因此你看到的正是PHP后端读取同一链接的方式。

如何解析URL

  1. 1

    粘贴URL

    输入任意URL,无论是绝对地址还是相对地址。无需点击任何按钮:边输入边解析。

  2. 2

    查看各部分

    表格会填入找到的协议、主机、端口、用户、密码、路径、查询和片段。空缺的部分显示为短横线。

  3. 3

    展开查询字符串

    每个`key=value`键值对都会单独占一行,其中百分号编码和`+`会被解码为真实字符。

  4. 4

    复制参数

    复制按钮会一次性把所有查询参数复制为`key=value`格式的行,方便粘贴到API客户端中。

URL的结构

以这个URL为例:https://user:pass@api.example.com:8443/v1/users?page=2&sort=name#profile。解析器会把它拆分为:

组成部分 值
scheme https
user user
pass pass
host api.example.com
port 8443
path /v1/users
query page=2&sort=name
fragment profile

随后,查询字符串会展开成单独的一张表格:page = 2,sort = name。

查询字符串是如何读取的

  • 值会从百分号编码中解码,+会变成空格,因此q=hello%20world和q=hello+world都会读作hello world。
  • 每一对在第一个=处分割,因此token=a=b=c会把a=b=c保留为值。
  • 重复的键只保留最后一个值:?id=1&id=2会返回id = 2。若要保留全部值,请使用数组语法id[]=1&id[]=2,它会以列表形式显示。
  • 带方括号的键(例如filter[status]=open)会变成嵌套结构,并以JSON形式显示。

端口、路径和片段

  • 端口会原样显示。它不会添加或删除任何内容,因此:443会显示为443,而没有端口的URL会让该行留空。
  • 末尾的斜杠会改变路径:https://a.com的路径为空,而https://a.com/的路径为/。
  • 片段(#之后的部分)只供浏览器使用,用于滚动到锚点或驱动客户端路由。它永远不会到达服务器,因此后端需要读取的任何内容都应放在查询字符串里。
  • 主机会原样返回;此解析器不会把国际化(非ASCII)域名转换成Punycode,也不会反向转换。

常见问题

可以。像/v1/users?ref=nav这样的相对链接没有协议和主机,因此这些行会留空,而路径和查询仍会被填入。只有格式错误的URL才会被完全拒绝,例如端口不是数字的http://a.com:port。

只保留最后一个值,因此?id=1&id=2会返回id = 2,这正是PHP后端读取它的方式。如果你需要全部值,请使用数组语法id[]=1&id[]=2,它们会以列表形式显示。

解析器会原样显示端口。它绝不会删除默认端口,也不会补上缺失的端口,因此没有端口的URL会显示空行,而https://a.com:443会显示443。

URL会发送到我们的服务器进行解析,因为此工具在服务器端运行,而不仅仅在你的浏览器中。我们不会保存URL本身;只会记录一条匿名的使用计数,表明解析器被使用过。

相关工具

此工具还提供其他语言版本