最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

實(shí)現(xiàn)思路

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

實(shí)現(xiàn)步驟

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

運(yùn)行:node mynode/index

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

結(jié)果:

在文本框里輸入“I LOVE YOU” 點(diǎn)擊提交

使用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; 

重新啟動(dòng),依舊輸入I LOVE YOU ,提交

總結(jié)

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

相關(guān)文章

  • Express下采用bcryptjs進(jìn)行密碼加密的方法

    Express下采用bcryptjs進(jìn)行密碼加密的方法

    本篇文章主要介紹了Express下采用bcryptjs進(jìn)行密碼加密的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • 淺談Node新版本13.2.0正式支持ES Modules特性

    淺談Node新版本13.2.0正式支持ES Modules特性

    這篇文章主要介紹了淺談Node新版本13.2.0正式支持ES Modules特性,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Nodejs實(shí)現(xiàn)WebSocket代碼實(shí)例

    Nodejs實(shí)現(xiàn)WebSocket代碼實(shí)例

    這篇文章主要介紹了Nodejs實(shí)現(xiàn)WebSocket代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 利用node+koa+axios實(shí)現(xiàn)圖片上傳和回顯功能

    利用node+koa+axios實(shí)現(xiàn)圖片上傳和回顯功能

    這篇文章為大家詳細(xì)介紹了如何利用node+koa+axios實(shí)現(xiàn)圖片上傳和回顯功能,主要實(shí)現(xiàn)簡單的圖片上傳和靜態(tài)內(nèi)容的訪問,感興趣的可以了解一下
    2022-05-05
  • node.js中的buffer.Buffer.isEncoding方法使用說明

    node.js中的buffer.Buffer.isEncoding方法使用說明

    這篇文章主要介紹了node.js中的buffer.Buffer.isEncoding方法使用說明,本文介紹了buffer.Buffer.isEncoding的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Mongoose經(jīng)常返回e11000 error的原因分析

    Mongoose經(jīng)常返回e11000 error的原因分析

    這篇文章主要給大家分析了Mongoose經(jīng)常返回e11000 error的原因,文中介紹的非常詳細(xì),對大家具有一定的參考價(jià)值,需要的朋友可以們下面來一起看看吧。
    2017-03-03
  • Node.js讀取文件操作教程示例

    Node.js讀取文件操作教程示例

    這篇文章主要為大家介紹了Node.js讀取文件教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 在Express處理錯(cuò)誤和未匹配路由的解決方法

    在Express處理錯(cuò)誤和未匹配路由的解決方法

    在使用 Express 開發(fā) Web 應(yīng)用程序時(shí),有效地處理錯(cuò)誤和管理未匹配任何定義處理程序的路由至關(guān)重要,這確保了應(yīng)用程序的健壯性和更好的用戶體驗(yàn),本文給出了詳細(xì)的解決方法,需要的朋友可以參考下
    2024-01-01
  • Node.js學(xué)習(xí)入門

    Node.js學(xué)習(xí)入門

    本文主要介紹了Node.js的入門知識(shí),包括:Node.js的特點(diǎn),運(yùn)行環(huán)境以及應(yīng)用小例。具有一定的參考價(jià)值,下面跟著小編一起來看下吧
    2017-01-01
  • Elasticsearch插件及nodejs的安裝配置

    Elasticsearch插件及nodejs的安裝配置

    這篇文章主要為大家介紹了Elasticsearch插件及nodejs的安裝配置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04

最新評(píng)論

云浮市| 洛扎县| 饶平县| 丰原市| 普兰店市| 瑞昌市| 皮山县| 洛阳市| 文成县| 洪湖市| 沭阳县| 栖霞市| 宁明县| 张家界市| 乳山市| 卢湾区| 公主岭市| 阜康市| 墨玉县| 汨罗市| 沧州市| 延吉市| 古田县| 桃江县| 二手房| 郧西县| 富民县| 团风县| 榆社县| 清远市| 同江市| 大渡口区| 济阳县| 藁城市| 理塘县| 娱乐| 平原县| 噶尔县| 巴里| 孝义市| 荥阳市|