Node.js で使えるライブラリ url-join が URL をいい感じに結合してくれて便利だったのでご紹介します。ちなみに、ブラウザ JavaScript でも利用できます。
実際に url-join を利用してみたサンプルコードをご紹介します。
使ってみた感想としては / や URL クエリパラメータの ? & をよしなに考慮して、URL 文字列を結合してくれるのが嬉しいです。
まず、一般的なパターンで試してみました。何の問題もなさそうですね。
var urljoin = require('url-join');
urljoin('http://example.com', 'a', '/b/cd', '?foo=123');
// 'http://example.com/a/b/cd?foo=123'
/ (スラッシュ) が連続して出現する以下のようなケースでも url-join がいい感じに結合してくれます。うっかり // のように連続していても Trim してくれるのは嬉しいですね。
var urljoin = require('url-join');
urljoin('http://example.com/', '/a', '//b/cd');
// 'http://example.com/a/b/cd'
[OK] ? だけ
URL クエリパラメータの結合は、とりあえず ? を付けておけば大丈夫みたいです。
var urljoin = require('url-join');
urljoin('http://example.com', 'a', '?foo=123', '?bar=456');
// 'http://example.com/a?foo=123&bar=456'
[NG] & だけ
さすがに & だけでやるとダメでした。ここまではケアしてくれないので ? 利用しましょう。
var urljoin = require('url-join');
urljoin('http://example.com', 'a', '&foo=123', '&bar=456');
// 'http://example.com/a&foo=123&bar=456'
以上、細かいことは気にしないで URL パラメータを結合したい現場からお送りしました。