はじめに
プリザンターでビューのリンクを取得した時に生成された長いURLや、外部サイトなどの長いURLを簡単に扱う方法として、短縮URLを使うことがあります。外部サービスを使う方法もありますが、せっかくならばプリザンターで完結させたい・・・というニーズを満たすためにプリザンターで短縮URLを作る方法を紹介します。
どうやって
URL情報を持つためのURLマスタサイトを作成し、そこを中継させることで、長いURLを見た目上短いURLに置き換えます。
実装してみた
適当なサイトを作成しClassAまたはDescriptionAにURLを格納します。分類と説明項目の使い分けは1024文字以上のURLを扱うかどうかで切り分けます。既に亡き者としてしまっても良いかもしれませんがIEが2083文字までという制限があります。IEを考えないのならSafariが4096文字なので、説明項目にしておくのが良いかもしれません。
次にサーバスクリプトを作成します。条件は画面表示の前です。
let redirect = context.QueryStrings.Data('r');
if(r == '1') {
context.AddResponse('Href','',model.DescriptionA);
}
編集画面を開いたときにそのURLに遷移するような実装ですが、編集画面を開いて即リダイレクトをされると書き換えが出来なくなってしまうためパラメータを持っている時のみリダイレクトします。
編集画面のURLを取得した後に、末尾にパラメータを追加してください。
-https://{IP Address or Host}/items/3642439
+https://{IP Address or Host}/items/3642439?r=1
このr=1のパラメータをもったURLにアクセスしたときだけ、DescriptionAに格納されているURLにリダイレクトされます。
反対にパラメータを持っているときのみ遷移させないということも出来ます。先ほどのサーバスクリプトの一部を書き換えます。
let redirect = context.QueryStrings.Data('r');
if(r != '1') {
context.AddResponse('Href','',model.DescriptionA);
}
どのような環境で使用するかによって、どちらが良いかというのは変わるかと思いますので、使い分けてみてください。
まとめ
今回はプリザンターで短縮URLを作る方法を紹介しました。この方法を使うとチャットツール、特にSMSなどの文字数制限の厳しいツールでURLを配るときにちょっと楽が出来るので、是非試して見てください。