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
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'
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!