Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der URLs in nodeJS

Detaillierte Erläuterung der URLs in nodeJS

零下一度
零下一度Original
2017-06-26 13:33:381284Durchsuche

Die vorherigen Wörter

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

in nodeJS ausführlich vorgestellt. Das Parsen des URL-Objekts hat den folgenden Inhalt, je nachdem, ob es in der URL-Zeichenfolge vorhanden ist. Jeder Teil, der nicht in der URL-Zeichenfolge enthalten ist, wird nicht im analysierten Objekt angezeigt

'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]: Vollständige, bereit zum Parsen der URL, einschließlich Protokoll und Host (Kleinbuchstaben)

'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
[Protokoll]: Anforderungsprotokoll, Kleinbuchstaben

'http:'
[Schrägstriche]: Das Vom Protokoll geforderter Schrägstrich (nach dem Doppelpunkt)

true 或 false
[Host]: Der vollständige Host-Teil der URL in Kleinbuchstaben, einschließlich Portinformationen

'host.com:8080'
 [auth]: Verifizierungsinformationen in der URL

'user:pass'
 [hostname]: Kleingeschriebener Hostname im Domänennamen

'host.com'
 [Port]: Die Portnummer des Hosts

'8080'
 [Pfadname]: Der Pfadteil in der URL, nach dem Hostnamen und vor der Abfrage Zeichen, einschließlich des ersten Schrägstrichs

'/p/a/t/h'
[Suche]: Die Abfragezeichenfolge in der URL, einschließlich des Fragezeichens am Anfang

'?query=string'
[Pfad]: Pfadname und Suche sind miteinander verbunden

'/p/a/t/h?query=string'
[Abfrage]: der Parameterteil in der Abfragezeichenfolge oder das nach der Analyse mit der Abfragezeichenfolge zurückgegebene Objekt .parse()

'query=string' or {'query':'string'}
【Hash】: Der Teil nach dem „#“ der URL (einschließlich des #-Symbols)

'#hash'

URL-Methode

Das URL-Modul enthält Tools zum Analysieren und Parsen von URLs. Rufen Sie require('url') auf, um auf das Modul zuzugreifen

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 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'
[url.format(urlObject)]

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));
[ url.resolve(from , to)】

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn