Node.js中的HTTP模塊與URL模塊
幾乎每門(mén)編程語(yǔ)言都會(huì)包括網(wǎng)絡(luò)這塊,Node.js也不例外。今天主要是熟悉下Node.js中HTTP服務(wù)。其實(shí)HTTP模塊是相當(dāng)?shù)蛯哟蔚?,它不提供路由、cookie、緩存等,像Web開(kāi)發(fā)中不會(huì)直接使用,但還是要熟悉下,這樣也方便以后的學(xué)習(xí)。
統(tǒng)一資源標(biāo)識(shí)符URL
這個(gè)是非常常見(jiàn)的,在Node.js中有幾種處理。
http://user:pass@host.com:80/resource/path/?query=string#hash
協(xié)議://身份認(rèn)證@主機(jī)名.com:端口/路徑/搜索/查詢(xún)#散列
在URL模塊中可以URL定義的屬性和方法
exports.parse = urlParse; exports.resolve = urlResolve; exports.resolveObject = urlResolveObject; exports.format = urlFormat; exports.Url = Url; function Url() { this.protocol = null; this.slashes = null; this.auth = null; this.host = null; this.port = null; this.hostname = null; this.hash = null; this.search = null; this.query = null; this.pathname = null; this.path = null; this.href = null; }
上面代碼可以看到URL模塊定義了protocol、slashes等這些屬性,還有parse、resolve 等方法.
1、URL字符串轉(zhuǎn)URL對(duì)象 parse
/** * Created by Administrator on 2016/3/26. */ var url=require('url'); var urlStr='http://user:pass@host.com:80/rseource/path?query=string#hash'; //parse(urlStr,[parseQueryString],[slashesDenoteHost]) //parseQueryString 布爾值 true:URL查詢(xún)字符串部分解析為對(duì)象字面量默認(rèn)false //slashesDenoteHost 布爾值 true:把格式為//host/path的URL解析為:{host:'host',pathname:'/path'},而不是{pathname:'//host/path'} 默認(rèn)false var urlObj=url.parse(urlStr,true,false); console.log(urlObj);
輸出結(jié)果:
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe URL.js
Url {
protocol: 'http:',
slashes: true,
auth: 'user:pass',
host: 'host.com:80',
port: '80',
hostname: 'host.com',
hash: '#hash',
search: '?query=string',
query: { query: 'string' },
pathname: '/rseource/path',
path: '/rseource/path?query=string',
href: 'http://user:pass@host.com:80/rseource/path?query=string#hash' }Process finished with exit code 0
2.URL重定向resolve
有時(shí)候請(qǐng)求的url和實(shí)際的物理地址并不一樣,這就要進(jìn)行虛擬地址和物理地址的轉(zhuǎn)換。
var url=require('url'); var originalUrl='http://user:pass@host.com:80/rseource/path?query=string#hash'; var newResource='/another/path?querynew'; console.log(url.resolve(originalUrl,newResource));
輸出結(jié)果:
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe URL.js
http://user:pass@host.com:80/another/path?querynewProcess finished with exit code 0
3.處理查詢(xún)字符串和表單參數(shù)
在做web開(kāi)發(fā)中常常需要向服務(wù)端get 、post請(qǐng)求,請(qǐng)求的時(shí)候可能會(huì)帶一些參數(shù),需要對(duì)參數(shù)進(jìn)行處理.比如:查詢(xún)字符串轉(zhuǎn)js對(duì)象或js對(duì)象轉(zhuǎn)字符串。
這里要用到queryString模塊的parse()和stringify()函數(shù)。
var qString=require('querystring') //QueryString.parse = QueryString.decode = function(qs, sep, eq, options) //1.qs 字符串 //2.sep 使用的分隔符 默認(rèn)& //3.ep 使用的運(yùn)算符 默認(rèn)= //4.一個(gè)具有maxKey屬性的對(duì)象 能夠限制生成的對(duì)象可以包含的鍵的數(shù)量默認(rèn)1000,0則無(wú)限制 var params=qString.parse("name=cuiyanwei&color=red&color=blue"); console.log(params); //QueryString.stringify = QueryString.encode = function(obj, sep, eq, options) console.log(qString.stringify(params,"&","="));
輸出結(jié)果:
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe URL.js
{ name: 'cuiyanwei', color: [ 'red', 'blue' ] }
name=cuiyanwei&color=red&color=blueProcess finished with exit code 0
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Express進(jìn)階之log4js實(shí)用入門(mén)指南
本篇文章主要介紹了Express進(jìn)階之log4js實(shí)用入門(mén)指南,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02淺談如何通過(guò)node.js對(duì)數(shù)據(jù)進(jìn)行MD5加密
本篇文章將主要針對(duì)于在NODE.JS中如何對(duì)數(shù)據(jù)進(jìn)行MD5加密,MD5是一種常用的哈希算法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Express.js 全局錯(cuò)誤處理實(shí)現(xiàn)
本文主要介紹了Express.js 全局錯(cuò)誤處理實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06使用node搭建自動(dòng)發(fā)圖文微博機(jī)器人的方法
這篇文章主要介紹了使用node搭建自動(dòng)發(fā)圖文微博機(jī)器人的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03Node.js自定義對(duì)象事件的監(jiān)聽(tīng)與發(fā)射
這篇文章介紹了Node.js自定義對(duì)象事件監(jiān)聽(tīng)與發(fā)射的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07關(guān)于node-bindings無(wú)法在Electron中使用的解決辦法
今天小編就為大家分享一篇關(guān)于關(guān)于node-bindings無(wú)法在Electron中使用的解決辦法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12windows系統(tǒng)下安裝yarn的詳細(xì)教程
yarn是一個(gè)新的JS包管理工具,它的出現(xiàn)是為了彌補(bǔ)npm的一些缺陷,下面這篇文章主要給大家介紹了關(guān)于windows系統(tǒng)下安裝yarn的詳細(xì)教程,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02