情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Node.jsでURLをパースする

2016/08/05

URLをパースするにはurl.parse関数を使用します。

var url = require('url');

var u = url.parse('xxx', true);
//or
var u = url.parse('xxx', false);

第1引数にURLを指定します。

第2引数にクエリ文字列をパースするかを真偽値として指定します。この引数は指定しなくても構いません。デフォルトはfalseです。

返り値としてURLを表すオブジェクトが得られます。

このオブジェクトは下のようなプロパティを有します。

  • href・・・URL全体です。ただし、プロトコル部分とホスト部分は小文字にされます。
  • protocol・・・プロトコル部分です。ただし、小文字にされます。
  • slashes・・・プロトコル部分の:の後に/があるかです。
  • host・・・ホスト部分です。ただし、小文字にされます。
  • auth・・・認証情報部分です。
  • hostname・・・ホスト部分のホスト名です。ただし、小文字にされます。
  • port・・・ホスト部分のポート番号です。
  • pathname・・・パス部分です。
  • search・・・クエリ文字列部分です。
  • path・・・パス部分とクエリ文字列部分を合わせたものです。
  • query・・・クエリ文字列部分のパラメータです。クエリ文字列をパースしない場合には文字列となり、パースする場合にはクエリ文字列を表すオブジェクトとなります。このオブジェクトではクエリ文字列のキーがプロパティ名となり、値がプロパティの値となります。クエリ文字列に同一のキーが複数存在する場合にはプロパティの値はそれらの値を全て含む配列となります。
  • hash・・・フラグメント部分です。

サンプルコード1

url-parse.js

var url = require('url');

console.log(url.parse('http://user:pass@host.co.jp:3000/p/a/t/h?query=string#hash'));
console.log(url.parse('http://user:pass@host.co.jp:3000/p/a/t/h?query=string#hash', true));

実行結果

C:\work\node>node url-parse.js
Url {
  protocol: 'http:',
  slashes: true,
  auth: 'user:pass',
  host: 'host.co.jp:3000',
  port: '3000',
  hostname: 'host.co.jp',
  hash: '#hash',
  search: '?query=string',
  query: 'query=string',
  pathname: '/p/a/t/h',
  path: '/p/a/t/h?query=string',
  href: 'http://user:pass@host.co.jp:3000/p/a/t/h?query=string#hash' }
Url {
  protocol: 'http:',
  slashes: true,
  auth: 'user:pass',
  host: 'host.co.jp:3000',
  port: '3000',
  hostname: 'host.co.jp',
  hash: '#hash',
  search: '?query=string',
  query: { query: 'string' },
  pathname: '/p/a/t/h',
  path: '/p/a/t/h?query=string',
  href: 'http://user:pass@host.co.jp:3000/p/a/t/h?query=string#hash' }

関連

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-Node.js