欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Node.Js如何處理post數(shù)據(jù)

 更新時間:2016年09月19日 11:38:35   投稿:daisy  
這篇文章給大家介紹了如何利用Node.Js處理post數(shù)據(jù),文中通過實例和圖文介紹的很詳細,有需要的小伙伴們可以參考借鑒,下面來一起看看吧。

實現(xiàn)思路

將data和end事件的回調(diào)函數(shù)直接放在服務(wù)器中,在data事件回調(diào)中收集所有的POST數(shù)據(jù),當接收到所有數(shù)據(jù),觸發(fā)end事件后,其回調(diào)函數(shù)調(diào)用請求路由,并將數(shù)據(jù)傳遞給它,然后,請求路由再將該數(shù)據(jù)傳遞給請求處理程序。

實現(xiàn)步驟

第一步我們設(shè)置了接收數(shù)據(jù)的編碼格式為UTF-8,第二步注冊了“data”事件的監(jiān)聽器,用于收集每次接收到的新數(shù)據(jù)塊,并將其賦值給postData 變量,最后第三步我們將請求路由的調(diào)用移到end事件處理程序中,以確保它只會當所有數(shù)據(jù)接收完畢后才觸發(fā),并且只觸發(fā)一次。我們同時還把POST數(shù)據(jù)傳遞給請求路由

示例代碼

index.js

var server = require("./server"); 
var router=require("./router"); 
var requestHandlers=require("./requestHandlers"); 
 
var handle = {} 
handle["/"] = requestHandlers.start; 
handle["/start"] = requestHandlers.start; 
handle["/upload"] = requestHandlers.upload; 
 
server.start(router.route,handle); 

server.js

var http = require("http"); 
var url=require("url"); 
 
function start(route,handle) { 
 function onRequest(request, response) { 
  var postData=""; 
    var pathname=url.parse(request.url).pathname; 
  console.log("Request for"+pathname+"received."); 
    
   request.setEncoding("utf8"); 
    
   request.addListener("data", function(postDataChunk) { 
     postData += postDataChunk; 
     console.log("Received POST data chunk '"+ 
     postDataChunk + "'."); 
  }); 
 
  request.addListener("end", function() { 
   route(handle, pathname, response, postData); 
  }); 
    //route(handle,pathname,response); 
   
  //response.writeHead(200, {"Content-Type": "text/plain"}); 
  //response.write("this is a demo"); 
  //response.end(); 
 } 
 
 http.createServer(onRequest).listen(5656,'127.0.0.1'); 
 console.log("Server has started. localhost:5656"); 
} 
 
exports.start = start;

router.js

function route(handle,pathname,response,postData){ 
  console.log("About to route a request for"+pathname); 
  if(typeof handle[pathname]=='function'){ 
    handle[pathname](response,postData); 
  } 
  else{ 
    console.log("no request handler found for"+pathname); 
    response.writeHead(404, {"Content-Type": "text/plain"}); 
  response.write("404 Not found"); 
  response.end(); 
  } 
} 
exports.route=route; 

requestHandlers.js

//var querystring = require("querystring"); 
 
function start(response,postData) { 
 console.log("Request handler 'start' was called."); 
 
 var body = '<html>'+ 
  '<head>'+ 
  '<meta http-equiv="Content-Type" content="text/html; '+ 
  'charset=UTF-8" />'+ 
  '</head>'+ 
  '<body>'+ 
  '<form action="/upload" method="post">'+ 
  '<textarea name="text" rows="20" cols="60"></textarea>'+ 
  '<input type="submit" value="Submit text" />'+ 
  '</form>'+ 
  '</body>'+ 
  '</html>'; 
 
  response.writeHead(200, {"Content-Type": "text/html"}); 
  response.write(body); 
  response.end(); 
} 
 
function upload(response,postData) { 
 console.log("Request handler 'upload' was called."); 
 response.writeHead(200, {"Content-Type": "text/plain"}); 
 response.write("You've sent: " + postData); 
 response.end(); 
} 
 
exports.start = start; 
exports.upload = upload; 

運行:node mynode/index

瀏覽器輸入http://localhost:5656/

結(jié)果:

在文本框里輸入“I LOVE YOU” 點擊提交

使用querystring模塊只提取文本,修改一下requestHandlers.js使只返回文本

var querystring = require("querystring"); 
 
function start(response,postData) { 
 console.log("Request handler 'start' was called."); 
 
 var body = '<html>'+ 
  '<head>'+ 
  '<meta http-equiv="Content-Type" content="text/html; '+ 
  'charset=UTF-8" />'+ 
  '</head>'+ 
  '<body>'+ 
  '<form action="/upload" method="post">'+ 
  '<textarea name="text" rows="20" cols="60"></textarea>'+ 
  '<input type="submit" value="Submit text" />'+ 
  '</form>'+ 
  '</body>'+ 
  '</html>'; 
 
  response.writeHead(200, {"Content-Type": "text/html"}); 
  response.write(body); 
  response.end(); 
} 
 
function upload(response,postData) { 
 console.log("Request handler 'upload' was called."); 
 response.writeHead(200, {"Content-Type": "text/plain"}); 
 response.write("You've sent: " + querystring.parse(postData).text); 
 response.end(); 
} 
 
exports.start = start; 
exports.upload = upload; 

重新啟動,依舊輸入I LOVE YOU ,提交

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望這篇文章的內(nèi)容對大家的學(xué)習(xí)或者工作帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • 在Linux系統(tǒng)中搭建Node.js開發(fā)環(huán)境的簡單步驟講解

    在Linux系統(tǒng)中搭建Node.js開發(fā)環(huán)境的簡單步驟講解

    這篇文章主要介紹了在Linux系統(tǒng)中搭建Node.js開發(fā)環(huán)境的步驟,Node使得JavaScript程序可以在本地操作系統(tǒng)環(huán)境中解釋運行,需要的朋友可以參考下
    2016-01-01
  • node中的cookie的具體使用

    node中的cookie的具體使用

    這篇文章主要介紹了node中的cookie的具體使用,詳細的介紹了什么是cookie和cookie的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • 總結(jié)幾道關(guān)于Node.js的面試問題

    總結(jié)幾道關(guān)于Node.js的面試問題

    這篇文章主要總結(jié)了幾道關(guān)于Node.js的面試問題,通過這些問題就來判斷一個人的Node.js水平是不太嚴謹?shù)?,但是它能讓你對面試者在Node.js上的經(jīng)驗如何有個大概的了解。有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • mongoose設(shè)置unique不生效問題的解決及如何移除unique的限制

    mongoose設(shè)置unique不生效問題的解決及如何移除unique的限制

    這篇文章主要給大家介紹了關(guān)于mongoose數(shù)據(jù)庫設(shè)置unique不生效問題的解決方法,以及Mongoose如何移除unique限制的方法示例,文中通過示例代碼介紹的非常詳細,需要的朋友們可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • 如何用Node寫頁面爬蟲的工具集

    如何用Node寫頁面爬蟲的工具集

    這篇文章主要介紹了如何用Node寫頁面爬蟲的工具集,主要介紹了三種方法,分別是Puppeteer、cheerio和Auto.js,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 完美解決node.js中使用https請求報CERT_UNTRUSTED的問題

    完美解決node.js中使用https請求報CERT_UNTRUSTED的問題

    下面小編就為大家?guī)硪黄昝澜鉀Qnode.js中使用https請求報CERT_UNTRUSTED的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 30分鐘用Node.js構(gòu)建一個API服務(wù)器的步驟詳解

    30分鐘用Node.js構(gòu)建一個API服務(wù)器的步驟詳解

    這篇文章主要介紹了30分鐘用Node.js構(gòu)建一個API服務(wù)器的步驟詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • NodeJS和瀏覽器中this關(guān)鍵字的不同之處

    NodeJS和瀏覽器中this關(guān)鍵字的不同之處

    這篇文章主要給大家介紹了關(guān)于NodeJS和瀏覽器中this關(guān)鍵字不同的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 深入淺析Node.js單線程模型

    深入淺析Node.js單線程模型

    Node.js采用 事件驅(qū)動 和 異步I/O 的方式,實現(xiàn)了一個單線程、高并發(fā)的運行時環(huán)境,而單線程就意味著同一時間只能做一件事,那么Node.js如何利用單線程來實現(xiàn)高并發(fā)和異步I/O?本文將圍繞這個問題來探討Node.js的單線程模型
    2017-07-07
  • Node.js多文件Stream合并,串行和并發(fā)兩種模式的實現(xiàn)方式

    Node.js多文件Stream合并,串行和并發(fā)兩種模式的實現(xiàn)方式

    這篇文章主要介紹了Node.js多文件Stream合并,串行和并發(fā)兩種模式的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評論