>  기사  >  웹 프론트엔드  >  Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.

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

青灯夜游
青灯夜游앞으로
2023-02-23 19:39:251903검색

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) h4>🎜이 방법 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인 경우 와 유사 >/ /randy/nickrandy호스트 이름으로 간주됩니다. false이면 randy code>는 <code>pathname의 일부로 간주됩니다. 🎜🎜언뜻 보면 이 문장의 의미를 이해하지 못할 수도 있습니다. 아래 예를 들어보시면 이해하실 거라 믿습니다. 🎜rrreee🎜Node의 url 모듈과 querystring 모듈에 대해 이야기해 보겠습니다.🎜format(urlObject)

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

resolve(from, to)

🎜이 방법은 기본 URL를 기준으로 대상을 확인하는 데 사용됩니다. > URL. 🎜rrreee

querystring

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

parse(str, sep, eq, options)

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

stringify(obj, sep, eq, options)

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

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

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

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제