URL / URI

URI 模板展开器看清每段地址如何生成

输入一个模板和变量 JSON 对象,查看完整 URI 及各表达式的展开结果。

URI 模板展开器

URI 模板

变量 JSON

模板与变量仅在当前浏览器处理,不请求输入或结果中的地址。

展开后的 URI

已省略变量:无

未使用的 JSON 键:无

表达式明细

第 1 行,第 24 列

{/version,resource}
  • 变量: version · 已定义
  • 变量: resource · 已定义

展开片段: /v1/search

第 1 行,第 43 列

{?q,page,tags*}
  • 变量: q · 已定义
  • 变量: page · 已定义
  • 变量: tags* · 已定义

展开片段: ?q=hello%20world&page=2&tags=red&tags=blue

已显示 2 / 2 个表达式

展开语法

RFC 6570 Level 4:{var}、{+var}、{#var}、{.var}、{/var}、{;var}、{?var}、{&var};:n 截取前缀,* 展开列表或映射。

上限按 UTF-16 单位计:模板 16,384,JSON 65,536,输出 262,144;最多 500 个表达式。

2 个表达式 · 0 个省略变量 · 输出 75 单位

调试接口时,资源 ID 里的斜杠通常要编码成 %2F,而基础路径里的斜杠需要保留。URI 模板展开器把这两种情况放在同一工作台里,让你先检查变量替换的实际结果,再把模板写进客户端。

URI 模板测试的关键不只是花括号是否配对,还包括变量是字符串、列表还是映射,以及操作符如何插入分隔符。这里按照 RFC 6570 进行展开,相对引用同样可以输入,不要求每个结果都是完整网址。

为什么使用 URI 模板展开器

从结果追到具体表达式

URI 模板展开器为每个表达式保留位置与输出片段。查询参数消失时,可以直接检查变量是缺失、null 还是空集合;空字符串则单独标记,避免把“没有传值”和“传了空值”混为一谈。

彩色变量填入模板中对应的槽位,组成路径与查询片段。

把星号造成的变化摊开看

{?tags} 会生成一个逗号连接的值,{?tags*} 会为每个列表项重复参数名;映射带星号时则使用各成员的键。表达式明细让你看到每段输出,不用从整条长地址里猜分隔符来自哪里。

上方三个列表项合并为一个值,下方展开为三个独立查询参数。

先确定变量形状,再选择操作符

01

按原样填写变量名

user.id 表示名为“user.id”的完整键,不会访问嵌套对象。变量名中的百分号编码也不会被解码;模板写了什么名称,JSON 就需要对应的键。

02

用示例比较语义差异

保留字符示例展示路径斜杠如何保留,复合值示例包含列表、映射和中文前缀。加载前会展示替换内容与字符数量;应用后可撤销一次,同时恢复输入和旧结果。

03

确认当前结果再导出

自动展开在修改后等待 350 毫秒;关闭后可点击按钮或按 Ctrl/Cmd + Enter。输入一变,旧结果立即过期,复制和下载会禁用,直到当前内容成功展开。

编码、数值与诊断都可核对

覆盖四级表达式语法

URI 模板展开器支持普通展开及 +、#、.、/、;、?、& 操作符。前缀长度允许 1–9999 个 Unicode 字符,* 用于列表或映射。百分号编码与分隔符由操作符决定,不需要额外切换编码模式。

大整数保持原始写法

数字值不会先转为浮点数。9007199254740993 这样的长 ID 可原样展开,-0 与指数记法也不改写;布尔值输出 true 或 false。变量 JSON 原文随报告保留,便于复查输入。

错误与正常省略分开呈现

模板与 JSON 语法错误显示行列位置,重复键会被拒绝,嵌套容器通过 JSON Pointer 标出位置。缺失变量则是可检查的诊断项,不会被误报成语法错误;表达式完全省略也可能是合法结果。

复制纯结果,下载完整过程

复制按钮只提供展开后的 URI;JSON 报告包含模板、变量原文、全部表达式明细和省略及未使用的名称。页面每次显示 50 个表达式,下载包含全部记录,不受分页限制。

输入规则与展开边界

只接收一个浅层变量对象
JSON 根必须为对象。变量允许字符串、数字、布尔值、null、标量列表或标量映射;嵌套容器即使未被引用也会拒绝。本页不提供文件导入、远程输入或多组变量批处理。
空字符串与未定义不同
缺失键、null、空集合会省略,集合中的 null 成员也会跳过。空字符串仍算已定义:{?x} 生成 ?x=,{;x} 生成 ;x。变量 JSON 合法时,空模板本身也合法。
名称不会自动转换
名称区分大小写,点号不作为路径分隔符,名称里的百分号序列既不解码也不统一大小写。重复键不会按后者覆盖前者处理;映射成员按照输入 JSON 中的顺序展开。
不把展开等同于网址规范化
普通展开会再次编码百分号,+ 与 # 保留合法百分号序列和保留字符。模板字面量中的空格非法;Unicode 使用 UTF-8 编码但不做规范化,也不补协议、解析基准地址或转换主机名。
超限或失败时不导出半成品
模板、JSON 和输出分别限 16,384、65,536、262,144 个 UTF-16 单位,表达式最多 500 个。共享解析器另限深度 100、节点数 50,000、数字长度 1,000 字符。任何错误都会阻止导出旧结果或部分展开值。
只做单向展开
本页不反向匹配路由、不检查接口可达性、不执行表达式,也没有默认值、条件语句或任意分隔符语法。需要拼接特殊内容时,先在变量中准备字符串,再按标准操作符展开。

URI 模板展开器常见问题

URI 模板中的花括号应该进行百分号编码吗?

表达式的花括号应保留原样:/users/{id} 包含变量,/users/%7Bid%7D 则只是带编码花括号的字面量。不要先对整个模板做 URL 编码;变量值的编码由表达式操作符完成。

RFC 6570 中 / 操作符与其他前缀的作用有什么不同?

/ 会在每个已定义变量前加入斜杠,列表带 * 时每项都会得到斜杠。普通展开会编码值内部的斜杠,而 + 保留值中的斜杠但不额外插入一个;三者用途不同。

RFC 6570 能为可选参数使用空格分隔符吗?

标准没有任意的可选空格分隔操作符。可以预先把需要的词组合成一个字符串,展开时其中空格变为 %20。列表的 * 仍按所选操作符使用 /、& 等固定分隔符。

如何用正则表达式验证 RFC 6570 URI 模板?

单靠正则表达式无法检查变量类型。例如 {items:3} 的语法本身正确,但 items 为列表时不能使用前缀。本工具会在解析模板后结合变量 JSON 验证,并在出错时报告位置。

URI 模板能用来匹配 URI 与路由吗?

RFC 6570 定义的是变量到 URI 的展开;多变量、保留字符和映射展开可能无法唯一反推。这里不会从 URI 提取路由参数,这类需求应使用路由匹配工具。

发现问题?

用 URI 模板展开器核对实际输入

换入你的变量对象,对照路径与查询片段,确认当前结果后保存报告。

一个模板,一份变量对象,逐段可核对。