node.js-----处理POST请求

简单的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对象的返回显示给用户的数据:

时间: 2024-11-07 14:49:33

node.js-----处理POST请求的相关文章

Node.js GET/POST请求

在很多场景中,我们的服务器都需要跟用户的浏览器打交道,如表单提交. 表单提交到服务器一般都使用GET/POST请求. 本章节我们将为大家介绍 Node.js GET/POST请求. 获取GET请求内容 由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数. node.js中url模块中的parse函数提供了这个功能. var http = require('http'); var url = require('url');

body-parser Node.js(Express) HTTP请求体解析中间件

body-parser Node.js(Express) HTTP请求体解析中间件 2016年06月08日     781     声明 在HTTP请求中,POST.PUT和PATCH三种请求方法中包含请求体,Node.js 原生HTTP模块中,请求体要基于流的方式接收和解析.body-parser是一个HTTP请求体解析中间件,使用这个模块可以解析JSON.Raw.文本.URL-encoded格式的请求体,Express框架中就是使用这个模块做为请求体解析中间件. 请求体解析 1.1 原生环境

node.js搭建代理服务器请求数据

1.引入node.js中的模块 1 var http = require("http"); 2 var url = require("url"); 3 var qs = require("querystring"); 2.创建服务器 //用node中的http创建服务器 并传入两个形参 http.createServer(function(req , res) { //设置请求头 允许所有域名访问 解决跨域 res.setHeader("

关于Node.js的httpClieint请求报错ECONNRESET的原因和解决措施

背景说明 最近在工作项目中有下面一个场景: 使用Node.js的express框架实现了一个文件系统服务器端,其中有个API用于客户端上传文件.客户端使用Node.js的HttpClient来调用服务器端的API上传文件. 客户端在上传小文件时没有任何问题,在上传大文件时httpClient请求报错了下面的错误, { [Error: socket hang up] code: 'ECONNRESET' } google了很多资料,最后看了一下Node.js的相关源码终于知道了该问题的原因和解决办

node.js处理post请求

1.html 2.app.js var http = require('http') var qs = require('querystring') /** * 路由控制的功能 * @param path */ function rotuteHandle( request ) { if( request.url == '/login' && request.method.toLowerCase() == 'post' ) { console.log('获取login的post请求') re

node.js以post请求方式发送http请求

var http = require('http'); var querystring = require('querystring'); // 请求参数 var postData = querystring.stringify({     'name': "wangbin",     'password': "123456",     'serverId': 2 }); var options = {   hostname: '192.168.1.135',   

Node.js之HTTP请求与响应

在C#.OC中也是客户端发起一个请求,服务端作出响应.我们可以把这个过程抽象理解 . 1.客户端给服务端发起请求相当于向服务端写入一个流(writable) 2.服务端读取客户端的流(readable) 3.服务端向客户端作出响应相当于向客户端写入一个流(writable) 4.客户端读取服务端的响应(readable) 整个流程分为两部分一是客户端的处理而是服务端的处理.最主要的还是客户端请求和服务端响应. 一.http.ClientRequest对象 它实现了writable流,可以使用它的

方便大家学习的Node.js教程(一):理解Node.js

理解Node.js 为了理解Node.js是如何工作的,首先你需要理解一些使得Javascript适用于服务器端开发的关键特性.Javascript是一门简单而又灵活的语言,这种灵活性让它能够经受住时间的考验.函数.闭包等特性使Javascript成为一门适合Web开发的理想语言. 有一种偏见认为Javascript是不可靠的,然而事实并非如此.人们对Javascript的偏见来源于DOM,DOM是浏览器厂商提供的用于Javascript与浏览器交互的API,不同浏览器厂商实现的DOM存在差异.

为什么应使用 Node.js

为什么应使用 Node.js JavaScript 高涨的人气带来了很多变化,以至于如今使用其进行网络开发的形式也变得截然不同了.就如同在浏览器中一样,现在我们也可以在服务器上运行 JavaScript ,从前端跨越到后端,这样巨大的反差让人难以想象,因为仅仅在几年前 Javascript 还如同 Flash 或者 Java applet 那样嵌入网页在沙箱环境中运行. 在深入Node.js之前,你可能需要阅读和了解使用跨栈式 JavaScript(JavaScript across the s

Node.js(转) -- 临时来说还看不懂!

转自:http://blog.jobbole.com/53736/ 本文由 伯乐在线 - Lellansin 翻译.未经许可,禁止转载!英文出处:toptal.欢迎加入翻译组. 介绍 JavaScript 高涨的人气带来了很多变化,以至于如今使用其进行网络开发的形式也变得截然不同了.就如同在浏览器中一样,现在我们也可以在服务器上运行 JavaScript ,从前端跨越到后端,这样巨大的反差让人难以想象,因为仅仅在几年前 Javascript 还如同 Flash 或者 Java applet 那样