[Node.js] URL をいい感じに結合してくれる url-join が便利

Tadashi Shigeoka ·  Mon, December 25, 2017

Node.js で使えるライブラリ url-join が URL をいい感じに結合してくれて便利だったのでご紹介します。ちなみに、ブラウザ JavaScript でも利用できます。

Node.js

url-join の使い方

実際に 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'

URL クエリパラメータを複数付与したいケース

[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 パラメータを結合したい現場からお送りしました。