node.js-----處理POST請求

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   os   java   ar   strong   

簡單的demo,post資料,並且接受資料

requestHandlers的模組

  start() : POSt表單HTML

  upload : POST資料擷取頁面

 

-----requestHandlers.js

-----router.js

-----server.js

-----index.js

 

requestHandlers.js

/*簡但的demo POST資料,並接受資料*//*requestHandlers.js模組*/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/html"});response.write("you‘ve sent" + postData);response.end();}exports.start = start;exports.upload = upload;

  

router.js

/*routers.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 for  " + pathname);response.writeHead(404,{"Content-Type":"text/html"});response.write("404 Not found");response.end();}}exports.route = route; 

  

server.js

/*server模組*/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);});}http.createServer(onRequest).listen(3000);console.log("Server has started");}exports.start = start;

 

index.js 

/*index模組*/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); 

命令列啟動應用:

node index.js

  

瀏覽器輸入:

http://127.0.0.1:3000/

  

命令列顯示:

瀏覽器顯示:

submit之後命令列顯示:此時URL改變,調用/upload的處理常式。

命令列顯示:

瀏覽器顯示:response對象的返回顯示給使用者的資料:

 

node.js-----處理POST請求

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.