Maison > Article > interface Web > Parlons du module url et du module querystring dans Node
Le module url
et le module querystring
sont deux modules de traitement URL
très importants. Il est souvent utilisé lors du développement d'un serveur node
. url
模块和querystring
模块是非常重要的两个URL
处理模块。在做node
服务端的开发时会经常用到。
在介绍url
模块之前我们先来一张图,看懂了这张图对于url
这个模块你就基本上没什么问题了。
我们来解释下各自的含义
:
,并且是小写的。【相关教程推荐:nodejs视频教程、编程教学】:
后面跟了两个//
,那么为true。usrname:passwd
,如果没有,则为usrname
。注意,这里区分大小写。ke.qq.com:8080
,并且是小写的。?
,此外,值是没有经过decode的。search
去掉?
,其余一样;如果是对象,那么是decode过的。#
。protocol
、host
会被转成小写字母。下面我们来讲解下它的三个常用方法
该方法将url
字符串,解析成object
,便于开发者进行操作。
const url = require("url"); const str = "http://user:password@randy.com:8080/index.html?nick=%E4%B8%AD%E6%96%87#part=1"; const obj = url.parse(str); console.log(obj);
输出
该方法还支持传递另外两个参数,parseQueryString
和slashesDenoteHos
parseQueryString:(默认为false)如为false
,则urlObject.query
为未解析的字符串,比如nick=%E4%B8%AD%E6%96%87
,且对应的值不会decode
;如果parseQueryString
为true,则urlObject.query
为object
,比如{ nick: '中文' }
,且值会被`decode;
const url = require("url"); const str = "http://user:password@randy.com:8080/index.html?nick=%E4%B8%AD%E6%96%87#part=1"; const obj2 = url.parse(str, true); console.log(obj2);
slashesDenoteHos:(默认为false)如果为true
,那么类似//randy/nick
里的randy
就会被认为是hostname
;如果为false
,则randy
被认为是pathname
的一部分。
光看起来可能不太理解这句话的含义,下面笔者举个例子我相信你们就明白了。
const str2 = "//randy/nick"; const obj3 = url.parse(str2, true, false); console.log(obj3); const obj4 = url.parse(str2, true, true); console.log(obj4);
这个方法就是parse
的反向操作。将对象转成url
字符串。
const pathObj = { protocol: "http:", slashes: true, auth: "user:password", host: "randy.com:8080", port: "8080", hostname: "randy.com", hash: "#part=1", search: "?nick=%E4%B8%AD%E6%96%87", query: "nick=%E4%B8%AD%E6%96%87", pathname: "/index.html", path: "/index.html?nick=%E4%B8%AD%E6%96%87", href: "http://user:password@randy.com:8080/index.html?nick=%E4%B8%AD%E6%96%87#part=1", }; console.log(url.format(pathObj)); // http://user:password@randy.com:8080/index.html?nick=%E4%B8%AD%E6%96%87#part=1
该方法用于解析相对于基本URL
的目标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 console.log(url.resolve("http://example.com/one/ddd/ddd/ddd", "./two")); // http://example.com/one/ddd/ddd/two console.log(url.resolve("http://example.com/one/ddd/ddd/ddd", "../two")); // http://example.com/one/ddd/two console.log(url.resolve("http://example.com/one/ddd/ddd/ddd", ".../two")); // http://example.com/one/ddd/ddd/.../two
querystring
这个模块,也是用来做url
查询参数的解析。这里我们重点分析下它的parse
和stringify
两个方法。
parse
是将查询字符串转成对象类型,并且也会decode
。
const querystring = require("querystring"); const str = "nick=randy&age=24&nick2=%E4%B8%AD%E6%96%87"; const obj = querystring.parse(str); console.log(obj); // { nick: 'randy', age: '24', nick2: '中文' }
下面我们再来看看它的第二和第三个参数。其实相当于可以替换&、=
为自定义字符,下面笔者举个例子就很快明白了。
const str1 = "name-randy|country-cn"; const obj1 = querystring.parse(str1); console.log(obj1); // { 'name-randy|country-cn': '' } const obj2 = querystring.parse(str1, "|", "-"); console.log(obj2); // { name: 'randy', country: 'cn' }
相当于把&
替换成了|
,把=
替换成了-
。笔者感觉配到这种情况应该不多。
这个方法就是上面parse
url
, prenons une photo pour comprendre comment cette image affecte url
Vous allez je n'ai fondamentalement aucun problème avec ce module.
🎜🎜nous Expliquons leurs significations respectives🎜:
et est en minuscule. [Tutoriels associés recommandés : tutoriel vidéo nodejs, Enseignement de la programmation] :
est suivi par S'il y a deux //
, alors c'est vrai. usrname:passwd
, sinon, c'est usrname
. Notez que ceci est sensible à la casse. ke.qq.com:8080
, et est en minuscules. ?
De plus, la valeur n'est pas décodée. recherche
avec ?
supprimé, et le reste est identique si c'est un objet, il est décodé. #
est inclus. protocol
et host
seront convertis en lettres minuscules. url
en object
, ce qui est pratique à utiliser pour les développeurs. 🎜const obj3 = { nick: "randy", age: "24", }; const str4 = querystring.stringify(obj3); console.log(str4); // nick=randy&age=24🎜Sortie🎜🎜🎜🎜Cette méthode prend également en charge la transmission de deux autres paramètres,
parseQueryString
et slashesDenoteHos
🎜🎜parseQueryString : (la valeur par défaut est false) s'il s'agit de false
, alors urlObject.query
est une chaîne non analysée, telle que nick=%E4%B8%AD%E6%96%87
, et correspond à La valeur ne sera pas décodée
; si parseQueryString
est vrai, alors urlObject.query
est un objet
, tel que { nick : 'Chinese' >
, et la valeur sera `decoded ; -2 .png" alt="Parlons du module url et du module querystring dans Node" chargement="lazy"/>🎜🎜slashesDenoteHos : (la valeur par défaut est false) si true
, alors similaire à / <code>randy
dans /randy/nick sera considéré comme hostname
s'il est false
, alors randy code> est considéré comme faisant partie du <code>pathname
. 🎜🎜Vous ne comprendrez peut-être pas le sens de cette phrase au premier coup d'œil. Je vais vous donner un exemple ci-dessous et je pense que vous comprendrez. 🎜const obj5 = { name: &quot;randy&quot;, country: &quot;cn&quot;, }; const str6 = querystring.stringify(obj5, &quot;|&quot;, &quot;-&quot;); console.log(str6); // name-randy|country-c🎜🎜format(urlObject)
parse
. Convertissez l'objet en une chaîne url
. 🎜rrreeeURL
de base > URL
. 🎜rrreeequerystring
Ce module est également utilisé pour analyser les paramètres de requête url
. Nous nous concentrons ici sur l'analyse de ses deux méthodes : parse
et stringify
. 🎜parse
convertit la chaîne de requête en type d'objet , et aussi decode
. 🎜rrreee🎜Jetons un coup d'œil à ses deuxième et troisième paramètres. En fait, cela équivaut à remplacer & et =
par des caractères personnalisés. L'auteur vous donnera un exemple ci-dessous et vous comprendrez rapidement. 🎜rrreee🎜Cela équivaut à remplacer &
par |
, et à remplacer =
par -
. L'auteur estime que cette situation devrait être rare. 🎜parse
ci-dessus > fonctionner. Passons directement à l'exemple ci-dessous🎜rrreee🎜Cette méthode prend également en charge les séparateurs personnalisés. 🎜const obj5 = { name: &quot;randy&quot;, country: &quot;cn&quot;, }; const str6 = querystring.stringify(obj5, &quot;|&quot;, &quot;-&quot;); console.log(str6); // name-randy|country-c
更多node相关知识,请访问:nodejs 教程!
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!