Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.

青灯夜游
풀어 주다: 2023-02-23 19:39:25
앞으로
1950명이 탐색했습니다.

Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.

url 모듈과 querystring 모듈은 두 가지 매우 중요한 URL 처리 모듈입니다. node 서버를 개발할 때 자주 사용됩니다. url模块和querystring模块是非常重要的两个URL处理模块。在做node服务端的开发时会经常用到。

url

在介绍url模块之前我们先来一张图,看懂了这张图对于url这个模块你就基本上没什么问题了。

Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.

我们来解释下各自的含义

  • 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:原始的地址。不过需要注意的是,protocolhost会被转成小写字母。

下面我们来讲解下它的三个常用方法

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);
로그인 후 복사

输出

Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.

该方法还支持传递另外两个参数,parseQueryStringslashesDenoteHos

parseQueryString:(默认为false)如为false,则urlObject.query为未解析的字符串,比如nick=%E4%B8%AD%E6%96%87,且对应的值不会decode;如果parseQueryString为true,则urlObject.queryobject,比如{ 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);
로그인 후 복사

Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.

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);
로그인 후 복사

Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.

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查询参数的解析。这里我们重点分析下它的parsestringify两个方法。

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에 어떤 영향을 미치는지 이해하기 위해 사진을 찍어 보겠습니다. 기본적으로 이 모듈에는 아무런 문제가 없습니다.

Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.🎜🎜us 각각의 의미를 설명해 보겠습니다.🎜
  • 프로토콜: 프로토콜 :가 포함되어 있으며 소문자라는 점에 유의해야 합니다. [권장 관련 튜토리얼: nodejs 동영상 튜토리얼, 프로그래밍 교육]
  • 슬래시: :를 따르는 경우 by //가 2개 있으면 true입니다.
  • auth: 인증 정보로, 비밀번호가 있으면 usrname:passwd, 없으면 usrname입니다. 대소문자를 구분한다는 점에 유의하세요.
  • 호스트: 호스트 이름. 포트는 ke.qq.com:8080과 같이 포함되며 소문자입니다.
  • 호스트 이름: 호스트 이름이며 포트를 포함하지 않으며 소문자입니다.
  • 포트: 포트 번호.
  • 경로: 검색 부분을 포함한 경로 부분입니다.
  • 경로명: 경로 부분, 검색 부분 제외.
  • 검색: 쿼리 문자열에는 ?가 포함되어 있습니다. 또한 값이 디코딩되지 않습니다.
  • 쿼리: 문자열 또는 개체. 문자열이면 search 빼기 ?이고 나머지는 동일하며 객체이면 디코딩됩니다.
  • hash: 해시 부분, #가 포함되어 있습니다.
  • href: 원래 주소. 단, protocolhost는 소문자로 변환되므로 주의하시기 바랍니다.
🎜세 가지 일반적인 방법을 설명하겠습니다🎜

parse(urlString, parseQueryString, slashesDenoteHost)🎜이 방법 url 문자열을 개발자가 조작하기 편리한 object로 구문 분석합니다. 🎜
const obj3 = {
  nick: "randy",
  age: "24",
};
const str4 = querystring.stringify(obj3);
console.log(str4); // nick=randy&age=24
로그인 후 복사
🎜Output🎜🎜Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.🎜🎜이 메소드는 두 개의 다른 매개변수인 parseQueryStringslashesDenoteHos🎜🎜parseQueryString 전달도 지원합니다. false인 경우 urlObject.querynick=%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
로그인 후 복사
로그인 후 복사
🎜Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.🎜🎜slashesDenoteHos: (기본값은 false) true인 경우 와 유사 &gt;/ /randy/nickrandy호스트 이름으로 간주됩니다. false이면 randy&lt; /code&gt; code&gt;는 &lt;code&gt;pathname의 일부로 간주됩니다. 🎜🎜언뜻 보면 이 문장의 의미를 이해하지 못할 수도 있습니다. 아래 예를 들어보시면 이해하실 거라 믿습니다. 🎜rrreee🎜Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.🎜< h4 data-id="heading-3">format(urlObject)

🎜이 메서드는 파싱의 반대 작업입니다. 개체를 url 문자열로 변환합니다. 🎜rrreee

resolve(from, to)

🎜이 방법은 기본 URL&lt;/code를 기준으로 대상을 확인하는 데 사용됩니다. &gt; &lt;code&gt;URL. 🎜rrreee

querystring

🎜querystring 이 모듈은 url 쿼리 매개변수를 구문 분석하는 데에도 사용됩니다. 여기서는 parsestringify라는 두 가지 방법을 분석하는 데 중점을 둡니다. 🎜

parse(str, sep, eq, options)

🎜parse는 쿼리 문자열을 객체 유형으로 변환합니다. , 디코드도 가능합니다. 🎜rrreee🎜 두 번째와 세 번째 매개변수를 살펴보겠습니다. 실제로 &amp; 및 =를 사용자 정의 문자로 바꾸는 것과 같습니다. 작성자가 아래에 예를 제시하면 빠르게 이해할 수 있습니다. 🎜rrreee🎜&amp;|로 바꾸고, =-로 바꾸는 것과 같습니다. 저자는 이런 상황이 드물어야 한다고 생각합니다. 🎜

stringify(obj, sep, eq, options)

🎜이 방법은 위의 구문 분석 운영합니다. 아래 예시로 바로 넘어가겠습니다🎜rrreee🎜이 방법은 맞춤 구분 기호도 지원합니다. 🎜
const obj5 = {
  name: &amp;quot;randy&amp;quot;,
  country: &amp;quot;cn&amp;quot;,
};
const str6 = querystring.stringify(obj5, &amp;quot;|&amp;quot;, &amp;quot;-&amp;quot;);
console.log(str6); // name-randy|country-c
로그인 후 복사
로그인 후 복사

更多node相关知识,请访问:nodejs 教程

위 내용은 Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:juejin.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!