NodeJSのURLの詳しい説明

零下一度
リリース: 2017-06-26 13:33:38
オリジナル
1323 人が閲覧しました

これまでの言葉

HTTPセクションでは、URLに関する関連知識が詳しく紹介されています。 nodejs の url モジュールは、URL の処理と解析のための実用的な関数をいくつか提供します。この記事ではnodeJSのURLについて詳しく紹介します

URLオブジェクト

URLオブジェクトの解析は、URL文字列に存在するかどうかに応じて以下の内容になります。 URL文字列に含まれていない部分は、解析されたオブジェクトには表示されません

'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
ログイン後にコピー
ログイン後にコピー
┌─────────────────────────────────────────────────────────────────────────────┐
│                                    href                                     │
├──────────┬┬───────────┬─────────────────┬───────────────────────────┬───────┤
│ protocol ││   auth    │      host       │           path            │ hash  │
│          ││           ├──────────┬──────┼──────────┬────────────────┤       │
│          ││           │ hostname │ port │ pathname │     search     │       │
│          ││           │          │      │          ├─┬──────────────┤       │
│          ││           │          │      │          │ │    query     │       │"  http:   // user:pass @ host.com : 8080   /p/a/t/h  ?  query=string   #hash "│          ││           │          │      │          │ │              │       │
└──────────┴┴───────────┴──────────┴──────┴──────────┴─┴──────────────┴───────┘
ログイン後にコピー

【href】:プロトコルとホスト(小文字)を含む、解析される完全なURL

'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
ログイン後にコピー
ログイン後にコピー

【プロトコル 】 : リクエストプロトコル、小文字

'http:'
ログイン後にコピー

【スラッシュ】 : プロトコルで必要なスラッシュ(コロンの後)

true 或 false
ログイン後にコピー

【host】 : ポート情報を含む完全な URL 小文字のホスト部分

'host.com:8080'
ログイン後にコピー

【 auth ]: URL内の検証情報

'user:pass'
ログイン後にコピー

【hostname】: ドメイン名の小文字のホスト名

'host.com'
ログイン後にコピー

【port】: ホストのポート番号

'8080'
ログイン後にコピー

【pathname】: パスURL の部分、ホスト名の後、クエリ文字の前に最初のスラッシュが含まれます

'/p/a/t/h'
ログイン後にコピー

[search]: 先頭の疑問符を含む URL 内のクエリ文字列

'?query=string'
ログイン後にコピー

[path]: pathnameとsearchはつながっています

'/p/a/t/h?query=string'
ログイン後にコピー

【query】:クエリ文字列のパラメータ部分、またはquerystring.parse()で解析して返されるオブジェクト

'query=string' or {'query':'string'}
ログイン後にコピー

【hash】:「#」以降の部分URL (# 記号を含む) の

'#hash'
ログイン後にコピー

URL メソッド

URL モジュールには、URL を分析および解析するためのツールが含まれています。 require('url')を呼び出してモジュールにアクセスします

var url = require('url');/*{ parse: [Function: urlParse],
  resolve: [Function: urlResolve],
  resolveObject: [Function: urlResolveObject],
  format: [Function: urlFormat],
  Url: [Function: Url] } */console.log(url);
ログイン後にコピー

【url.parse(urlStr[, parseQueryString][,slashesDenoteHost])]

URL文字列を入力してオブジェクトを返します

第二パラメータparseQueryString(デフォルト) false)、false の場合、urlObject.query は author=%E5%B0%8F%E7%81%AB%E6%9F%B4 などの解析されていない文字列であり、対応する値はデコードされません。 parseQueryStringがtrueの場合、urlObject.queryが{ author: 'Little Match' }のようなオブジェクトになり、値がデコードされます

3番目のパラメータslashesDenoteHos(デフォルトはfalse)、trueであれば正しく解析できますプロトコルヘッダー URL がない場合、//foo/bar の foo はホスト名とみなされます; false の場合、foo はパス名の一部とみなされます

var url = require('url');var str = 'http://user:pass@host.com:8080/p/a/t/h?author=%E5%B0%8F%E7%81%AB%E6%9F%B4#hash';/*Url {
  protocol: 'http:',
  slashes: true,
  auth: 'user:pass',
  host: 'host.com:8080',
  port: '8080',
  hostname: 'host.com',
  hash: '#hash',
  search: '?author=%E5%B0%8F%E7%81%AB%E6%9F%B4',
  query: 'author=%E5%B0%8F%E7%81%AB%E6%9F%B4',
  pathname: '/p/a/t/h',
  path: '/p/a/t/h?author=%E5%B0%8F%E7%81%AB%E6%9F%B4',
  href: 'http://user:pass@host.com:8080/p/a/t/h?author=%E5%B0%8F%E7%81%AB%E6%9F%B4#hash' } */console.log(url.parse(str));
ログイン後にコピー
var url = require('url');var str = 'http://user:pass@host.com:8080/p/a/t/h?author=%E5%B0%8F%E7%81%AB%E6%9F%B4#hash';/*Url {
  protocol: 'http:',
  slashes: true,
  auth: 'user:pass',
  host: 'host.com:8080',
  port: '8080',
  hostname: 'host.com',
  hash: '#hash',
  search: '?author=%E5%B0%8F%E7%81%AB%E6%9F%B4',
  query: { author: '小火柴' },
  pathname: '/p/a/t/h',
  path: '/p/a/t/h?author=%E5%B0%8F%E7%81%AB%E6%9F%B4',
  href: 'http://user:pass@host.com:8080/p/a/t/h?author=%E5%B0%8F%E7%81%AB%E6%9F%B4#hash' }  */console.log(url.parse(str,true));
ログイン後にコピー
var url = require('url');var str = '//foo/bar';var result1 = url.parse(str,true);var result2 = url.parse(str,true,true);
console.log(result1.path);//'//foo/bar'console.log(result1.pathname);//'//foo/bar'console.log(result1.hostname);//nullconsole.log(result2.path);//'/bar'console.log(result2.pathname);//'/bar'console.log(result2.hostname);//'foo'
ログイン後にコピー

【url.format(urlObject)】

逆の操作url.parse(str) の場合、解析された URL オブジェクトを入力し、フォーマットされた文字列を返します

urlObject にはプロトコル、スラッシュ、プロトコルなどの多くのフィールドが含まれており、必ずしもすべてを渡す必要はありません。は解析ロジックのセットです

書式設定のワークフローは次のとおりです

href 会被忽略
protocol 无论是否有末尾的 : (冒号),会同样的处理
http, https, ftp, gopher, file 协议会被添加后缀://mailto, xmpp, aim, sftp, foo, 等协议添加后缀:
slashes 如果协议需要 ://,设置为 true仅需对之前列出的没有斜杠的协议,比如议 mongodb://localhost:8000/auth 如果出现将会使用.
hostname 仅在缺少 host 时使用
port 仅在缺少 host 时使用
host 用来替换 hostname 和 port
pathname 无论结尾是否有 / 将会同样处理
search 将会替代 query属性
无论前面是否有 / 将会同样处理
query (对象; 参见 querystring) 如果没有 search,将会使用
hash 无论前面是否有#,都会同样处理
ログイン後にコピー
var url = require('url');var obj = {
  protocol: 'http:',
  auth: 'user:pass',
  host: 'host.com:8080',
  hash: '#hash',
  query: { author: '小火柴' }
}//http://user:pass@host.com:8080?author=%E5%B0%8F%E7%81%AB%E6%9F%B4#hashconsole.log(url.format(obj));
ログイン後にコピー

【url.resolve(from, to)】

url.resolve()メソッドはブラウザを使用してハイパーリンクを解析します ターゲットを解析します次のパラメータを使用したベース URL に対する相対 URL

from <String> 解析时相对的基本 URL。
to <String> 要解析的超链接 URL。
ログイン後にコピー
var url = require('url');
console.log(url.resolve('/one/two/three', 'four'));         // '/one/two/four'console.log(url.resolve('http://example.com/', '/one'));    // 'http://example.com/one'console.log(url.resolve('http://example.com/one', '/two')); // 'http://example.com/two'
ログイン後にコピー

以上がNodeJSのURLの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート