Node.js之HTPP URL

幾乎每門編程語言都會包括網絡這塊,Node.js也不例外。今天主要是熟悉下Node.js中HTTP服務。其實HTTP模塊是相當低層次的,它不提供路由、cookie、緩存等,像Web開發中不會直接使用,但還是要熟悉下,這樣也方便以后的學習。

一、統一資源標識符URL

這個是非常常見的,在Node.js中有幾種處理。

http://user:pass@host.com:80/resource/path/?query=string#hash

協議://身份認證@主機名.com:端口/路徑/搜索/查詢#散列

在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字符串轉URL對象 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查詢字符串部分解析為對象字面量默認false
//slashesDenoteHost 布爾值 true:把格式為//host/path的URL解析為:{host:'host',pathname:'/path'},而不是{pathname:'//host/path'} 默認false
var urlObj=url.parse(urlStr,true,false);
console.log(urlObj);
"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

有時候請求的url和實際的物理地址并不一樣,這就要進行虛擬地址和物理地址的轉換。

?

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));

?

"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?querynew

Process finished with exit code 0

?

3.處理查詢字符串和表單參數

在做web開發中常常需要向服務端get 、post請求,請求的時候可能會帶一些參數,需要對參數進行處理.比如:查詢字符串轉js對象或js對象轉字符串。

這里要用到queryString模塊的parse()和stringify()函數。

var qString=require('querystring')
//QueryString.parse = QueryString.decode = function(qs, sep, eq, options)
//1.qs 字符串
//2.sep 使用的分隔符 默認&
//3.ep 使用的運算符 默認=
//4.一個具有maxKey屬性的對象 能夠限制生成的對象可以包含的鍵的數量默認1000,0則無限制
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,"&","="));
"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

?

轉載于:https://www.cnblogs.com/5ishare/p/5323101.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396493.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396493.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396493.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

串口數據波形顯示_【專題教程第6期】SEGGER的J-Scope波形上位機軟件,RTT模式波形上傳可飆到500KB/S...

【專題教程第6期】SEGGER的J-Scope波形上位機軟件,RTT模式波形上傳速度可狂飆到500KB/S左右說明:1、在實際項目中,很多時候,我們需要將傳感器或者ADC的數值以波形的形式顯示。通常的解決辦法是用串口上位機,USB接口上位…

JavaScript-基礎入門.0014.JavaScript內置對象

2019獨角獸企業重金招聘Python工程師標準>>> 簡單介紹: 說明: 內置對象就是不依賴宿主環境在程序執行之前已經存在的對象,不必顯式的實例化內置對象,前面已經介紹了大部分內置對象,而Global和Math兩個單體內置對象比較特殊,所以單獨講. Global對象: 說明: Js中不屬于…

Java中字符串連接符(+)和append的區別

參考鏈接:https://www.jianshu.com/p/849f1d443b3a 文章結構: 第一部分:對的原理進行分析 第二部分: 和 append 循環對比(貼出代碼,以及分別循環后的反編譯字節碼,來對兩者進行對比)…

百度seo排名點擊器_SEO整站優化思路 - 百度seo排名點擊

原出處:超級排名系統原文鏈接:SEO整站優化思路 - 超級排名系統整站優化的大體思路包括哪些?下面超級排名系統小編詳細給大家講解下:一、建站優化我們在建立網站之前與建立網站的時候需要做的優化,包括標題優化、描述關…

unity 天空盒_Unity自定義可編程渲染管線(SRP)(二)——編寫第一個自定義SRP

一句話描述,我們可以把SRP分解成兩個部分,分別是SRP Asset,SRP Instance。SRP AssetSRP Asset是一個Unity Asset文件,用來存儲渲染管線的特定配置信息,包含的信息有:游戲物體是否應該投射陰影;使…

構建node.js基礎鏡像_在Android上構建Node.js應用程序

構建node.js基礎鏡像by Aurlien Giraud通過AurlienGiraud 在Android上構建Node.js應用程序 (Building a Node.js application on Android) 第2部分:Express和NeDB (Part 2: Express and NeDB) In Part 1 we saw how to use Termux, a Terminal emulator and Linux …

【design pattern】工廠方法模式和抽象工廠模式

前言 設計模式分為三大類: 創建型模式:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式; 結構型模式:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式; 行為型模式&#xff1…

linux中使用隨機數

(1)單純使用rand重復調用n次,就會得到一個0-RAND_MAX之間的偽隨機數,如果需要調整范圍,可以得到隨機數序列后再進行計算。(2)單純使用rand來得到偽隨機數序列有缺陷,每次執行程序得到的偽隨機序列是同一個序列,沒法得到…

mysql 異地備份工具_異地備份簡單實現(mysql)

該腳本只適用于MYISAM引擎,如果需要適用于innodb,請修改備份命令即可。#!/bin/bash#該腳本只能用來備份myisam引擎數據庫#author:vaedit#date:2017/9/18#備份過程function beifen(){BACKDIRdate "%Y-%m-%d-%H"mkdir /backup/$BACKD…

python管理數據庫設計_Pycharm+Django+Python+MySQL開發 后臺管理數據庫

Django框架十分簡單易用,適合搭建個人博客網站。網上有很多教程,大多是關于命令行操作Django,這里分享一些用最新工具進行Django開發過程,主要是PyCharm太強大,不用有點可惜。第一次寫技術開發類的博文,可能…

你鼓舞了我是世界杯主題曲嗎_選擇方法和鼓舞人心的網站列表

你鼓舞了我是世界杯主題曲嗎by Kristoffer Andreasen通過克里斯托弗安德烈森 選擇方法和鼓舞人心的網站列表 (The pick and choose approach and a list of inspirational websites) In the past couple of years I have created quite a few websites. In the beginning, I h…

共享程序集GAC

原文標題: 原文地址:https://www.cnblogs.com/1996V/p/9037603.html 共享程序集GAC 我上面說了這么多有關CLR加載程序集的細節和規則,事實上,類似于mscorlib.dll、System.dll這樣的FCL類庫被引用的如此頻繁,它已經是我…

彈簧觸摸開關原理圖_10年老電工經驗之談:常見的開關電源那些事兒

隨著電控系統中對控制回路安全性要求提高,控制回路的工作電壓是越來越趨于直流低壓化。由此,控制回路內各種使用直流電源的傳感器、中小微型直流繼電器等電器裝置是日益增多。也正因如此,電控系統內不同品牌的開關電源也相應地多了起來。因牽…

erlang mysql連接超時_Erlang數據庫-(一)Erlang與Mysql的連接

下載:http://download.csdn.net/detail/hjhjava/7088277把該文件的東西全部編譯好,然后根據下面的解釋就可以操作Mysql的。很簡單~-record(row,{a1 0, a20}).%% 第一個參數是該鏈接的名字(根據它來操作Mysql),第二參數是本機號(ip地址)%% &a…

SQL SERVER 中 GO 的用法2

具體不廢話了&#xff0c;請看下文詳解。 12345678910use db_CSharpgoselect *,備注casewhen Grade>90 then 成績優秀when Grade<90 and Grade>80 then 成績良好when Grade<80 and Grade>70 then 成績及格else 不及格endfrom tb_Grade如果只是執行一條語句&…

js中判斷值不等于undefined

文章&#xff1a;JS 中判斷空值 undefined 和 null轉載于:https://www.cnblogs.com/Tpf386/p/9804496.html

reddit_我在3天內瘋狂地審查了Reddit上的50個投資組合,從中學到了什么。

redditI’ve always enjoyed critiquing applicants’ portfolios at the design studio where I work. And I also often ask for feedback on my own designs on Reddit’s webdev subreddit.我一直都很喜歡在我工作的設計工作室里評估申請人的作品集。 我也經常在Reddit的we…

【BZOJ1001】[BeiJing2006]狼抓兔子

挺簡單一個題&#xff0c;最小割模板 我的感覺就是可能建圖的時候會比較麻煩吧&#xff0c;畢竟三個方向。 #include <cctype> #include <climits> #include <cstdio> #include <cstring> #include <iostream>#define debug(x) std::cout <&l…

管理活動目錄域服務實訓_管理學院學生黨支部開展實踐教育基地服務活動

紅星E校有態度 有溫度 可關注為進一步加強黨的建設&#xff0c;深化管理學院學生黨支部與實踐基地的互動性&#xff0c;2020年9月11至12日&#xff0c;管理學院學生黨支部協助白鶴村村委實踐基地完成第七次人口普查相關工作&#xff0c;共計6名預備黨員參與。工作開始前的培訓會…

mysql 漢編碼 的選_peewee連接mysql漢語言數據編碼_mysql

peewee連接mysql中文數據編碼系統是win7 x64python 2.7.6的site.py里面編碼設定為 utf-8py文件首行指定 #coding:utf-8mysql 5.5.38安裝時指定代碼為utf-8peewee的連接數據庫代碼為&#xff1a;db MySQLDatabase(host 127.0.0.1, user root, passwd 1, database mz, chars…