HTTPセクションでは、URLに関する関連知識が詳しく紹介されています。 nodejs の url モジュールは、URL の処理と解析のための実用的な関数をいくつか提供します。この記事ではnodeJSの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 を分析および解析するためのツールが含まれています。 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 サイトの他の関連記事を参照してください。