HTTP 섹션에서는 URL에 대한 관련 지식을 자세히 소개합니다. nodejs의 url 모듈은 URL 처리 및 구문 분석을 위한 몇 가지 실용적인 기능을 제공합니다. 이번 글에서는 nodeJS
URL 객체를 파싱하면 URL 문자열에 존재하는지 여부에 따라 다음과 같은 내용을 갖게 됩니다. URL 문자열에 없는 부분은 구문 분석된 개체에 표시되지 않습니다.
'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]: 프로토콜 및 호스트(소문자)
'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
[protocol ]를 포함하여 구문 분석할 전체 URL : 요청 프로토콜, 소문자
'http:'
【슬래시】: 프로토콜에 필요한 슬래시(콜론 뒤)
true 或 false
【host】: 포트 정보를 포함한 전체 URL 소문자 호스트 부분
'host.com:8080'
【 auth ]: url에 있는 확인 정보
'user:pass'
【hostname】: 도메인 이름에 소문자 호스트 이름
'host.com'
【port】: 호스트의 포트 번호
'8080'
【pathname】: 경로 호스트 이름 뒤 쿼리 문자 앞에 첫 번째 슬래시가 포함됩니다.
'/p/a/t/h'
[검색]: 선행 물음표
'?query=string'
[경로]를 포함한 URL의 쿼리 문자열: pathname과 search가 함께 연결됨
'/p/a/t/h?query=string'
【query】: 쿼리 문자열의 매개변수 부분 또는 querystring.parse()를 사용하여 구문 분석한 후 반환된 객체
'query=string' or {'query':'string'}
【hash】: "# 뒤의 부분 " URL(# 기호 포함)
'#hash'
URL 모듈에는 URL을 분석하고 구문 분석하는 도구가 포함되어 있습니다. 모듈에 액세스하려면 require('url')을 호출하세요
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])】
URL 문자열을 입력하고 객체를 반환합니다
두 번째 매개변수인parseQueryString(기본값) false), false인 경우 urlObject.query는 분석되지 않은 문자열(예: 작성자=%E5%B0%8F%E7%81%AB%E6%9F%B4)이며 다음과 같은 경우 해당 값이 디코딩되지 않습니다. parseQueryString이 true이면 urlObject.query는 객체입니다(예: {author: 'Little Match' }). 값이 디코딩됩니다
세 번째 매개변수 slashesDenoteHos(기본값은 false), true인 경우 올바르게 구문 분석할 수 있습니다. 프로토콜 헤더 URL이 없으면 //foo/bar의 foo는 호스트 이름으로 간주됩니다. false인 경우 foo는 경로 이름
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)】
url.parse(str)의 역연산은 구문 분석된 URL 객체를 입력하고 형식화된 문자열을 반환합니다.
urlObject에는 프로토콜, 슬래시, 프로토콜 등과 같은 많은 필드가 포함되어 있으므로 모두 전달할 필요는 없습니다. 이므로 일련의 구문 분석 논리가 있습니다
서식 지정 작업 흐름은 다음과 같습니다
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)】
url.resolve() 메서드는 브라우저를 사용하여 하이퍼링크를 구문 분석합니다. 다음 매개변수
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'
위 내용은 nodeJS의 URL에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!