Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée des URL dans nodeJS

零下一度
Libérer: 2017-06-26 13:33:38
original
1323 Les gens l'ont consulté

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'
Copier après la connexion
Copier après la connexion
┌─────────────────────────────────────────────────────────────────────────────┐
│                                    href                                     │
├──────────┬┬───────────┬─────────────────┬───────────────────────────┬───────┤
│ protocol ││   auth    │      host       │           path            │ hash  │
│          ││           ├──────────┬──────┼──────────┬────────────────┤       │
│          ││           │ hostname │ port │ pathname │     search     │       │
│          ││           │          │      │          ├─┬──────────────┤       │
│          ││           │          │      │          │ │    query     │       │"  http:   // user:pass @ host.com : 8080   /p/a/t/h  ?  query=string   #hash "│          ││           │          │      │          │ │              │       │
└──────────┴┴───────────┴──────────┴──────┴──────────┴─┴──────────────┴───────┘
Copier après la connexion

[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'
Copier après la connexion
Copier après la connexion

[protocole] : Protocole de requête, minuscule

'http:'
Copier après la connexion

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

true 或 false
Copier après la connexion

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

'host.com:8080'
Copier après la connexion

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

'user:pass'
Copier après la connexion

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

'host.com'
Copier après la connexion

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

'8080'
Copier après la connexion

 [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'
Copier après la connexion

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

'?query=string'
Copier après la connexion

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

'/p/a/t/h?query=string'
Copier après la connexion

[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'}
Copier après la connexion

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

'#hash'
Copier après la connexion

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);
Copier après la connexion

[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));
Copier après la connexion
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));
Copier après la connexion
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'
Copier après la connexion

[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 无论前面是否有#,都会同样处理
Copier après la connexion
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));
Copier après la connexion

[ 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。
Copier après la connexion
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'
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal