標籤: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請求