[Node.js]get/post请求

摘要

在很多情况下,我们的web服务器都需要接受客户端浏览器传递的参数或者数据。最常见的是get和post请求。

获取get请求的内容

get请求传递的参数在url中,参数部分在?后面。因此可以手动解析后面的内容作为get请求的参数。node.js中url模块中的parse函数提供了这个功能。

一个例子

var http=require("http");
var url=require("url");
var util=require("util");
http.createServer(function(request,response){response.writeHead(200,{"Content-Type":"text/plain"});response.end(util.inspect(url.parse(request.url,true)));
}).listen(5544);

启动服务器

浏览器访问

使用parse解析url中的参数

webserver.js核心代码如下:

var http=require("http");
var url=require("url");
var util=require("util");
function start(route){function onRequest(request,response){response.writeHead(200,{"Content-Type":"text/plain"});//解析url参数var params=url.parse(request.url,true).query;response.write("my name is "+params.name);response.end();};http.createServer(onRequest).listen(5544);console.log("web server has started.");
};
exports.start=start;

route.js代码如下:

function route(pathname){console.log("request the route "+pathname);
};
exports.route=route;

user.js代码如下

var server=require("./webserver");
var router=require("./router");
server.start(router.route);

启动webserver

浏览器浏览

post请求

post请求的内容全部在请求体中,http.ServerRequest并没有一个属性内容为请求体,原因是等待请求体传输可能是一件耗时的工作。

比如上传文件,而很多时候我们可能并不需要理会请求体内容,恶意的post请求会大大消耗服务器资源,所以node.js默认是不会解析请求体的,当你需要的时候,需要手动来做。

一个例子

var http=require("http");
var url=require("url");
var util=require("util");
var querystring=require("querystring");
function start(route){function onRequest(request,response){//定义一个post变量,用于暂时村塾请求体信息。var post='';//通过request的data事件监听函数,每当接受到请求的数据,就累加到post变量中request.on("data",function(chunk){post+=chunk;});//在end事件触发后,通过querystring.parse将post解析为真正的post请求格式,
然后想客户端返回。
request.on("end",function(){post=querystring.parse(post);response.end(util.inspect(post));});response.writeHead(200,{"Content-Type":"text/plain"});//解析url参数var params=url.parse(request.url,true).query;response.write("my name is "+params.name);response.end();};http.createServer(onRequest).listen(5544);console.log("web server has started."); }; exports.start=start;

学习资料

http://www.runoob.com/nodejs/node-js-get-post.html

转载于:https://www.cnblogs.com/wolf-sun/p/6476373.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyEclipse10 Tomcat7 JDK1.7 配置

第一步.MyEclipse10 Tomcat7 JDK1.7下载 MyEclipse10http://downloads.myeclipseide.com/downloads/products/eworkbench/indigo/installers/myeclipse-10.0-offline-installer-windows.exe Tomcat http://tomcat.apache.org/ Java SE Development Kit 7 WINDOWS版 http://www…

跳過 Windows RT的UI

RT启动进入常规桌面 微软Surface RT发布的时间已经不短了,相信很多朋友都已经熟悉了这个全新的平板,并且已经上手。Surface RT开机默认进入的界面为Windows UI,这对于经常使用App的朋友来说并没有什么,但是对于那些经常使用Office…

Android知识点剖析系列:深入了解layout_weight属性

前言 Android中layout_weight这个属性对于经常捣鼓UI的我们来说,肯定不会陌生。但是我们在真正使用这个属性时,经常会出现一些莫名奇妙的布局效果;如果仅仅知其然而不知其所以然,一些意外的布局效果一定让我们颇为头疼。在本文中&…

oracle诊断,Oracle 诊断事件列表

Oracle 诊断事件列表(2013-03-26 18:05:26)标签:oracle诊断事件itORA-10000: controlfile debug event, name control_fileORA-10001: controlfile crash event1ORA-10002: controlfile crash event2ORA-10003: controlfile crash event3ORA-10004: controlfile cra…

Qt 独立运行时伴随CMD命令窗口

用Qt写了一个小软件,在把程序release后,打包分装后,发现程序运行的时候会伴随cmd命令窗口,可把我愁怀了 不过功夫不负有心人,在老师和我网友的帮助下,终于搞完了 CONFIG:指定工程配置和编译参数…

Ant简单工程的构建

1.在Ant的官方网站http://ant.apache.org/bindownload.cgi下载Ant最新版本(我下载的是apache-ant-1.8.2-bin.zip),Ant无需安装,直接解压后设置环境变量即可。 2.测试Ant是否安装成功,在控制台运行ant命令,出…

如何让Latex公式字体变小

转载:http://blog.sina.com.cn/s/blog_5e16f1770100gdxh.html 第一种方法:用比较笨的方法,一个一个公式用 \begin{small} \begin{equation} \ldots \end{equation} \end{small} 第二种方法:定义新的变量环境 在开始 \newenvironme…

.NET重构(四):窗体继承+模板方法,完美实现组合查询

导读:在机房重构中,有好些个查询都是大同小异,最为显著的就是组合查询了。怎样给自己省事儿,相同的东西能不能重复利用,就成了一个现实的问题。第一遍做机房的时候,使用的更多的是:复制粘贴。学…

This task is currently locked by a running workflow and cannot be edited

转自:http://geek.hubkey.com/2007/09/locked-workflow.html 转自:http://blogs.code-counsel.net/Wouter/Lists/Posts/Post.aspx?Listc04a88a9%2Dd138%2D4ac3%2Da2bb%2Db95c9fdd114e&ID118 SPWorkflow.AlertTask()的时候出现“This task is curren…

Cydia源局域网化

2019独角兽企业重金招聘Python工程师标准>>> 步骤 在网址根目录创建文件夹cydia,把你的deb文件放到 cydia/debs/ 文件夹下。在终端cd进入cydia文件夹输入命令:dpkg-scanpackages debs /dev/null > Packages输入命令:tar zcvf P…

linux系统中 库分为静态库和,Linux系统静态库与共享库

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?This article mainly introduces the statics library and shared library on Linux and has done some experiments for better comprehension.Static library&am…

redis windows下的环境搭建

先说下安装吧!感觉这东西跟mongodb差不多,安装和布置挺简单,下载地址:https://github.com/dmajkic/redis/downloads 下载下来的包里有两个,一个是32位的,一个是64位的。根据自己的实情情况选择,…

jsp乱码

自从重装系统之后电脑运行程序总是容易出现一些微妙的乱码,一直都没有彻底解决,有时候在别的机器上运行无误的代码一到我的机器上就出现一些问题。 myeclipse编码方式怎么改都无效,每次只能再代码中加上几行转码的语句 今天终于找到罪魁祸首-…

如何使用Notepad++格式化XML文件

经常会从数据库中读到挤在一起的XML, 整理它们的格式需要使用一些工具. 比如笔者之前使用过online的tool. 后来经同事介绍, 改用VS2008的CtrlK, CtrlF来整理. 但是VS2008有点庞大, 开启起来还是有点慢, 用起来也远不如Notepad顺手. 于是笔者Google了一把. 找到了下面的步骤, 非…

联想u盘linux安装教程,联想笔记本用U盘安装 winXP系统教程

联想笔记本用U盘安装 winXP系统教程。联想笔记本是指联想集团生产的便携手提电脑。 联想集团成立于1984年,由中科院计算所投资20万元人民币、11名科技人员创办,到今天已经发展成为一家在信息产业内多元化发展的大型企业集团。今天小编将给大家介绍使用U盘…

为什么Docker是云计算必然的现在和未来

Docker所代表的Container技术,是对内核的Cgroups、namespace等内容的使用.Linux Containerlxc借助BootZdocker可以实现在Mac和Windows上运行CGroups限制容器的资源使用Namespace机制,实现荣期间的隔离chroot,文件系统的隔离Linux内核提供的限制&#xff…

linux桌面环境 mac os,在Windows或Linux桌面上使用Mac OS Dashboard Widget | MOS86

Windows Vista中引入了Gadgets,并在Windows 7中继续使用。它们允许您从最新的新闻更新到月球的各个阶段查看各种信息,并在桌面上使用一些有用的实用程序。我们以前写过一个程序,允许您在Windows XP中使用Windows 7风格的小工具和一些实用程序…

spark 笔记 16: BlockManager

spark 笔记 16: BlockManager 先看一下原理性的文章:http://jerryshao.me/architecture/2013/10/08/spark-storage-module-analysis/ ,http://jerryshao.me/architecture/2013/10/08/spark-storage-module-analysis/ , 另外,spar…

C++ stringstream介绍,使用方法与例子

C引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。   istringstream类用于执行C风格的串流的输入操作。 ostringstream类用于执行C风格的串流的输出操作。 strstream类同时可以支持C风格的串流的输入…

CheckBox控件

前台代码&#xff1a; 1 <asp:CheckBox ID"CheckBox1" runat"server" Text "苹果"/> 2 <asp:CheckBox ID"CheckBox2" runat"server" Text "柠檬"/> 3 <asp:CheckBox ID"CheckBox3" runa…