Maison  >  Article  >  interface Web  >  Explication détaillée des URL dans nodeJS

Explication détaillée des URL dans nodeJS

零下一度
零下一度original
2017-06-26 13:33:381324parcourir

Les mots précédents

Dans la section HTTP, les connaissances pertinentes de l'URL sont présentées en détail. Le module url de nodejs fournit des fonctions pratiques pour le traitement et l'analyse des URL. Cet article présentera en détail l'URL

Objet URL

dans nodeJS. L'analyse de l'objet URL a le contenu suivant, selon qu'il existe ou non dans la chaîne d'URL. Toute partie qui ne figure pas dans la chaîne de l'URL n'apparaîtra pas dans l'objet analysé

'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] : Complètement prêt à analyser l'URL, y compris le protocole et l'hôte (minuscules)

'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'

[protocole] : Protocole de requête, minuscule

'http:'

[barres obliques] : Le barre oblique requise par le protocole (après les deux points)

true 或 false

[hôte] : la partie hôte complète en minuscules de l'URL, y compris les informations sur le port

'host.com:8080'

 [auth] : informations de vérification dans l'url

'user:pass'

 [hostname] : nom d'hôte minuscule dans le nom de domaine

'host.com'

 [port] : Le numéro de port de l'hôte

'8080'

 [pathname] : La partie chemin dans l'URL, après le nom d'hôte et avant la requête caractère, y compris la première barre oblique

'/p/a/t/h'

[recherche] : la chaîne de requête dans l'URL, y compris le point d'interrogation initial

'?query=string'

[chemin] : le chemin et la recherche sont connectés ensemble

'/p/a/t/h?query=string'

[requête] : la partie paramètre dans la chaîne de requête ou l'objet renvoyé après l'analyse à l'aide de querystring.parse ()

'query=string' or {'query':'string'}

【hash】 : La partie après le "#" de l'URL (y compris le symbole #)

'#hash'

Méthode URL

Le module URL contient des outils d'analyse et d'analyse des URL. Appelez require('url') pour accéder au module

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])]

Entrez l'URL Chaîne de caractères, renvoie un objet

Le deuxième paramètre parseQueryString (la valeur par défaut est false), s'il est faux, urlObject.query est une chaîne non analysée, telle que author=%E5%B0%8F%E7%81 % AB%E6%9F%B4, et la valeur correspondante ne sera pas décodée ; si parseQueryString est vrai, alors urlObject.query est un objet, tel que { author : 'Little Match' }, et la valeur sera décodée

Le troisième paramètre slashesDenoteHos (la valeur par défaut est false), s'il est vrai, les URL sans en-têtes de protocole peuvent être correctement analysées, similaire à foo dans //foo/bar, qui sera considéré comme un nom d'hôte s'il est faux, foo le sera ; considéré comme le nom d'hôte. Une partie du nom de chemin

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)]

L'opération inverse de url.parse(str), saisir un objet URL analysé et renvoyer une chaîne formatée

urlObject contient de nombreux champs, tels que protocole, barres obliques, protocole, etc., qui ne sont pas nécessairement obligatoire Transmettez-les tous, il y a donc un ensemble de logique d'analyse

Le flux de travail de formatage est le suivant

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)】

La méthode url.resolve() analyse une URL cible par rapport à une URL de base de la même manière qu'un navigateur analyse les hyperliens. Les paramètres sont les suivants

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'

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn