url
모듈과 querystring
모듈은 두 가지 매우 중요한 URL
처리 모듈입니다. node
서버를 개발할 때 자주 사용됩니다. url
模块和querystring
模块是非常重要的两个URL
处理模块。在做node
服务端的开发时会经常用到。
url
在介绍url
模块之前我们先来一张图,看懂了这张图对于url
这个模块你就基本上没什么问题了。
我们来解释下各自的含义
- protocol:协议,需要注意的是包含了
:
,并且是小写的。【相关教程推荐:nodejs视频教程、编程教学】 - slashes:如果
:
后面跟了两个//
,那么为true。 - auth:认证信息,如果有密码,为
usrname:passwd
,如果没有,则为usrname
。注意,这里区分大小写。 - host:主机名。注意包含了端口,比如
ke.qq.com:8080
,并且是小写的。 - hostname:主机名,不包含端口,并且是小写的。
- port: 端口号。
- path:路径部分,包含search部分。
- pathname:路径部分,不包含search部分。
- search:查询字符串,注意,包含了
?
,此外,值是没有经过decode的。 - query:字符串 或者 对象。如果是字符串,则是
search
去掉?
,其余一样;如果是对象,那么是decode过的。 - hash:哈希部分,注意包含了
#
。 - href:原始的地址。不过需要注意的是,
protocol
、host
会被转成小写字母。
下面我们来讲解下它的三个常用方法
parse(urlString, parseQueryString, slashesDenoteHost)
该方法将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);
format(urlObject)
这个方法就是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
resolve(from, to)
该方法用于解析相对于基本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
querystring
这个模块,也是用来做url
查询参数的解析。这里我们重点分析下它的parse
和stringify
两个方法。
parse(str, sep, eq, options)
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' }
相当于把&
替换成了|
,把=
替换成了-
。笔者感觉配到这种情况应该不多。
stringify(obj, sep, eq, options)
这个方法就是上面parse
url
url
모듈을 소개하기 전에 이 사진이 url
에 어떤 영향을 미치는지 이해하기 위해 사진을 찍어 보겠습니다. 기본적으로 이 모듈에는 아무런 문제가 없습니다.

- 프로토콜: 프로토콜
:
가 포함되어 있으며 소문자라는 점에 유의해야 합니다. [권장 관련 튜토리얼: nodejs 동영상 튜토리얼, 프로그래밍 교육] - 슬래시:
:
를 따르는 경우 by//
가 2개 있으면 true입니다. - auth: 인증 정보로, 비밀번호가 있으면
usrname:passwd
, 없으면usrname
입니다. 대소문자를 구분한다는 점에 유의하세요. - 호스트: 호스트 이름. 포트는
ke.qq.com:8080
과 같이 포함되며 소문자입니다. - 호스트 이름: 호스트 이름이며 포트를 포함하지 않으며 소문자입니다.
- 포트: 포트 번호.
- 경로: 검색 부분을 포함한 경로 부분입니다.
- 경로명: 경로 부분, 검색 부분 제외.
- 검색: 쿼리 문자열에는
?
가 포함되어 있습니다. 또한 값이 디코딩되지 않습니다. - 쿼리: 문자열 또는 개체. 문자열이면
search
빼기?
이고 나머지는 동일하며 객체이면 디코딩됩니다. - hash: 해시 부분,
#
가 포함되어 있습니다. - href: 원래 주소. 단,
protocol
과host
는 소문자로 변환되므로 주의하시기 바랍니다.
parse(urlString, parseQueryString, slashesDenoteHost) h4>🎜이 방법 url
문자열을 개발자가 조작하기 편리한 object
로 구문 분석합니다. 🎜const obj3 = {
nick: "randy",
age: "24",
};
const str4 = querystring.stringify(obj3);
console.log(str4); // nick=randy&age=24
🎜Output🎜🎜
🎜🎜이 메소드는 두 개의 다른 매개변수인 parseQueryString
및 slashesDenoteHos
🎜🎜parseQueryString 전달도 지원합니다. false
인 경우 urlObject.query
는 nick=%E4%B8%AD%E6%96%87
와 같이 구문 분석되지 않은 문자열이며 다음에 해당합니다. 값은 디코드
되지 않습니다. parseQueryString
이 true인 경우 urlObject.query
는 객체
입니다. > { nick: '중국어' }, 값은 `디코딩됩니다. 🎜const obj5 = {
name: "randy",
country: "cn",
};
const str6 = querystring.stringify(obj5, "|", "-");
console.log(str6); // name-randy|country-c
🎜
🎜🎜slashesDenoteHos: (기본값은 false) true
인 경우 와 유사 >/ /randy/nick
의 randy
는 호스트 이름
으로 간주됩니다. false
이면 randy code>는 <code>pathname
의 일부로 간주됩니다. 🎜🎜언뜻 보면 이 문장의 의미를 이해하지 못할 수도 있습니다. 아래 예를 들어보시면 이해하실 거라 믿습니다. 🎜rrreee🎜
🎜format(urlObject)
🎜이 메서드는 파싱
의 반대 작업입니다. 개체를 url
문자열로 변환합니다. 🎜rrreeeresolve(from, to)
🎜이 방법은 기본URL
를 기준으로 대상을 확인하는 데 사용됩니다. > URL
. 🎜rrreeequerystring
🎜querystring
이 모듈은 url
쿼리 매개변수를 구문 분석하는 데에도 사용됩니다. 여기서는 parse
와 stringify
라는 두 가지 방법을 분석하는 데 중점을 둡니다. 🎜parse(str, sep, eq, options)
🎜parse
는 쿼리 문자열을 객체 유형으로 변환합니다. , 디코드
도 가능합니다. 🎜rrreee🎜 두 번째와 세 번째 매개변수를 살펴보겠습니다. 실제로 & 및 =
를 사용자 정의 문자로 바꾸는 것과 같습니다. 작성자가 아래에 예를 제시하면 빠르게 이해할 수 있습니다. 🎜rrreee🎜&
를 |
로 바꾸고, =
를 -
로 바꾸는 것과 같습니다. 저자는 이런 상황이 드물어야 한다고 생각합니다. 🎜stringify(obj, sep, eq, options)
🎜이 방법은 위의구문 분석
의 반대입니다. > 운영합니다. 아래 예시로 바로 넘어가겠습니다🎜rrreee🎜이 방법은 맞춤 구분 기호도 지원합니다. 🎜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 教程!
위 내용은 Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Vercel是什么?本篇文章带大家了解一下Vercel,并介绍一下在Vercel中部署 Node 服务的方法,希望对大家有所帮助!

gm是基于node.js的图片处理插件,它封装了图片处理工具GraphicsMagick(GM)和ImageMagick(IM),可使用spawn的方式调用。gm插件不是node默认安装的,需执行“npm install gm -S”进行安装才可使用。

如何用pkg打包nodejs可执行文件?下面本篇文章给大家介绍一下使用pkg将Node.js项目打包为可执行文件的方法,希望对大家有所帮助!

本篇文章带大家详解package.json和package-lock.json文件,希望对大家有所帮助!

本篇文章给大家分享一个Nodejs web框架:Fastify,简单介绍一下Fastify支持的特性、Fastify支持的插件以及Fastify的使用方法,希望对大家有所帮助!

node怎么爬取数据?下面本篇文章给大家分享一个node爬虫实例,聊聊利用node抓取小说章节的方法,希望对大家有所帮助!

本篇文章给大家分享一个Node实战,介绍一下使用Node.js和adb怎么开发一个手机备份小工具,希望对大家有所帮助!

先介绍node.js的安装,再介绍使用node.js构建一个简单的web服务器,最后通过一个简单的示例,演示网页与服务器之间的数据交互的实现。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

Dreamweaver Mac版
시각적 웹 개발 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기
