大牛筆記:node.js基礎第三課時

HTML Node.js 文章 技術 愛攝影的小呆萌 2017-03-26

大牛筆記:node.js基礎第三課時

http: 超文本傳輸協議,所有路由都是通過它來傳輸,通過它能夠構建一個客戶端與服務端連接的管道

http模塊: 能夠構建服務器環境(模擬客戶端)

創建服務器

類似 node.js基礎(一) 文章中提到的

var http = require("http");var url = require("url");var server = http.createServer(function(req, res){	console.log(req.url); // 打印請求的路徑

實例1

使用from表單進行簡單的前後臺交互

首先創建三個文件, index.htmlform.html 以及 http.js (名字隨意,具體是瞭解如何實現)。

index.html文件內容

<!DOCTYPE html><html>

form.html文件內容

<!DOCTYPE html><html>

http.js文件內容

var http = require("http");var url = require("url");var fs = require("fs");var server = http.createServer(function(req, res){	var urlObj = url.parse(req.url, true);	if (urlObj.pathname == "/" || urlObj.pathname == "/index.html") {		// 把本項目中的index.html讀出來,寫進響應res中

至此可以試一下打開http.js的模擬服務器,在瀏覽器輸入 http://localhost:8080 進行一下相關操作看一下效果吧。

最終效果在終端能夠如圖所示就大功告成了,但是這裡只有簡單的兩個頁面交互,如果有許許多多的頁面,每個頁面都要去else if判斷一下是不是太麻煩了,這裡有個較為簡便的方法,在 http.js 的文件中將else if改為如下:

else if (urlObj.pathname != "/favicon.ico") {	fs.createReadStream("." + urlObj.pathname).pipe(res);

這樣就不用寫很多pathname去一一匹配了~是不是很方便呢!

這裡默認的傳輸方式是通過GET,那如果是POST該怎麼寫呢?

實例2

使用from表單的POST傳輸方式進行簡單的前後臺交互

還是實例1中的三個文件,將 form.html 文件的 form 標籤裡的屬性更改為

<formaction="/post"method="post">

然後再將 http.js 更改為如下

var http = require("http");var url = require("url");var fs = require("fs");var queryString = require("querystring");var formidable = require("formidable");var server = http.createServer(function(req, res){	var urlObj = url.parse(req.url, true);	if (urlObj.pathname == "/" || urlObj.pathname == "/index.html") {		var rs = fs.createReadStream("index.html");

這樣最終效果同GET方式一樣能夠獲取到填寫的用戶名和密碼,並且最終頁面返回的結果是“你請求的地址是/post”

實例3

使用from表單的POST傳輸方式進行簡單的圖片上傳的操作

這裡同樣是上述的三個文件,在 form.html 文件中加上上傳文件的標籤

<inputtype="file"name="fileup">

http.js 中也添加一段對post傳輸文件的操作,代碼如下:

else if (urlObj.pathname == "/post") {	// 處理上傳文件

此時可以測試一下上傳一張圖片看看能否在upload目錄下找到同樣的圖片~

實例4

ajax請求的發送與接收

這裡就不需要 form.html 文件了,將 index.html 加上一段 script 標籤進行ajax請求發送,代碼如下:

<script>

http.js 文件中的else if後再加上一段代碼

else if (urlObj.pathname == "/ajax") {	// 接收了ajax傳輸的數據

最終同樣在瀏覽器輸入 http://localhost:8080 在終端就能收到ajax發送出來的user和pass兩個字段了~

實例5

http模擬客戶端

這裡我們再新建一個名為 request.js 的文件,這裡提供get和post兩種寫法,代碼如下:

var http = require("http");

然後在 http.js 文件中再添加一段else if代碼

else if (urlObj.pathname == "/request") {	// get方式

然後我們先開啟一下 http.js 這個模擬服務器,在運行 request.js 進行模擬請求,我們會發現 request.js 會返回出

{"err": 0, "msg": "請求的內容"}

,然後服務器會返回出

user=xxx&pass=111 請求結束

。如果出現這種結果就說明發送成功了!

相關推薦

推薦中...