AZ Tools

URI テンプレート展開 (RFC 6570)

ネットワーク

RFC 6570 URI テンプレートは変数から URL を組み立てる方法を記述し、GitHub API、OpenAPI/Swagger のパステンプレート、ハイパーメディア(HAL/JSON-LD)リンクなど至る所で使われています。`https://api.example.com{/version}/users{/id}{?fields*,page}` のようなテンプレートは変数集合に対して実際の URL に展開されます。本ツールは仕様の 4 レベルすべてを実装します — 単純な `{var}` 展開、予約(`{+var}`)・フラグメント(`{#var}`)演算子、ラベル(`.`)・パス(`/`)・パス形式パラメータ(`;`)・フォームクエリ(`?`)・継続(`&`)演算子 — に加え explode(`*`)・prefix(`:n`)修飾子と、空・未定義値の正しい処理まで。変数は文字列・数値・リスト・キー/値マップを値とする JSON オブジェクトで指定し、出力は演算子の要求どおりに正確にパーセントエンコードされます。RFC 6570 の全例題集で検証済みです。すべてローカルで動作し、アップロードされません。

展開された URL

https://api.example.com/v2/users/42?fields=name&fields=email&page=1

RFC 6570 の 4 レベルすべてを実装:演算子 + : # . / ; ? & と explode(*)・prefix(:n) 修飾子。

使い方

  1. {波括弧} で URI テンプレートを入力、例:{/path}{?query*}。
  2. 変数を JSON オブジェクト(文字列・数値・配列・オブジェクト)で指定。
  3. 展開された URL を読んでコピー。テンプレートや変数を変えると結果がライブ更新されます。

よくある質問

演算子の意味は?
波括弧内の最初の文字が演算子を選びます:なし = カンマ連結の単純値;`+` は予約文字をエスケープしない;`#` はフラグメント;`.` はラベル;`/` はパスセグメント;`;` は `;name=value` パス形式パラメータ;`?` はフォームクエリ `?name=value`;`&` はクエリ継続。各々が独自の区切りと名前の有無を制御します。
`*` と `:n` は何をしますか?
`*` は explode 修飾子で、リストやマップを個別の構成要素に展開します(例:`{?list*}` → `?list=a&list=b`、`?list=a,b` ではなく)。`:n` は prefix 修飾子で、エンコード前に文字列値を先頭 n 文字に切り詰めます(例:`value` の `{var:3}` → `val`)。
リストやマップはどう渡しますか?
JSON を使います:リストは配列(`"fields": ["name","email"]`)、連想マップはオブジェクト(`"keys": {"semi": ";"}`)です。文字列・数値はスカラーです。欠落・null・空リスト・空オブジェクトの変数は未定義とみなされ、出力に何も加えません。
エンコードは正しいですか?
はい — 値は演算子の許可集合に従ってパーセントエンコードされます。単純およびほとんどの演算子は非予約集合外のすべてをエンコードし、`+` と `#` は予約 URL 文字(および既存の %XX トリプレット)をそのまま通し、RFC 6570 に一致します。実装は仕様の全例題表を通過します。

関連ツール