Im HTTP-Abschnitt werden die relevanten Kenntnisse der URL ausführlich vorgestellt. Das URL-Modul in nodejs bietet einige praktische Funktionen für die URL-Verarbeitung und -Analyse. In diesem Artikel wird das URL-Objekt
'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 "│ ││ │ │ │ │ │ │ │ └──────────┴┴───────────┴──────────┴──────┴──────────┴─┴──────────────┴───────┘
'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
'http:'
true 或 false
'host.com:8080'
'user:pass'
'host.com'
'8080'
'/p/a/t/h'
'?query=string'
'/p/a/t/h?query=string'
'query=string' or {'query':'string'}
'#hash'
URL-Methode
var url = require('url');/*{ parse: [Function: urlParse], resolve: [Function: urlResolve], resolveObject: [Function: urlResolveObject], format: [Function: urlFormat], Url: [Function: Url] } */console.log(url);
URL eingeben Zeichen String, gibt ein Objekt zurück
Der zweite Parameter parseQueryString (Standard ist false). Wenn er false ist, ist urlObject.query eine nicht analysierte Zeichenfolge, z. B. author=%E5%B0%8F%E7%81 % AB%E6%9F%B4, und der entsprechende Wert wird nicht dekodiert; wenn parseQueryString wahr ist, dann ist urlObject.query ein Objekt, wie zum Beispiel { Author: 'Little Match' }, und der Wert wird dekodiert
Der dritte Parameter slashesDenoteHos (Standard ist false). Wenn er wahr ist, können URLs ohne Protokollheader korrekt analysiert werden, ähnlich wie foo in //foo/bar, das als Hostname betrachtet wird Wird als Hostname betrachtet. Teil des Pfadnamens
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'
Der umgekehrte Vorgang von url.parse(str) besteht darin, ein analysiertes URL-Objekt einzugeben und eine formatierte Zeichenfolge zurückzugeben.
urlObject enthält viele Felder wie Protokoll, Schrägstriche, Protokoll usw., die nicht unbedingt vorhanden sind erforderlich Übergeben Sie sie alle, damit es eine Reihe von Parsing-Logik gibt
Der Formatierungsworkflow ist wie folgt
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));
Die Methode url.resolve() analysiert eine Ziel-URL relativ zu einer Basis-URL auf eine Art und Weise, wie ein Browser Hyperlinks analysiert:
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'
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der URLs in nodeJS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!