第7天 Post方法与上传——http post方法请求
http的请求,常见的分为GET和POST方法请求。GET方法请求,和得到请求的数据在昨天都介绍完了。相对比较简单,通过前两天的开发,我们让stuwebfk框架具有了req.params和req.query属性,其中req.query可以得到http get的请求参数。
http post方法请求
http的请求,常见的分为GET和POST方法请求。GET方法请求,和得到请求的数据在昨天都介绍完了。相对比较简单,通过前两天的开发,我们让stuwebfk框架具有了req.params和req.query属性,其中req.query可以得到http get的请求参数。
http get方法请求有个限制,是2048个字符,也就是无法传递大数据量的请求参数。可以使用post方法请求来突破这个限制,但通过这个方法请求,我们就不能通过 req.query 得到post方法的请求参数了。
下面先做个表单,表单的method=post,然后发送表达信息。在服务器端,让程序读取数据。
测试表单
<!doctype html> <html> <body> <form action="http://localhost:3000/post" method="post"> <input type="text" name="name"/> <input type="text" name="age"/> <input type="submit"/> </form> </body> </html>
然后我们写一段服务器端的代码,如下:
var App = require("../..").App, app = new App; app.post("/post",function(req,res){ var body_data = “”; req.on("data",function(chunk){ body_data += chunk; }); req.on("end",function(){ console.log(body_data.toString()); }) }) app.listen(3000);
这段代码中,我们建立一个body_data
,用来储存post方法请求的body体数据
,通过监听req.on(“data”,回调函数)
,可以得到体数据,回调函数可能会被调用多次,因为数据可能会很大,所以每一次得到的chunk块数据
都被累加到 body_data
中,当req.on("end",回调函数) 的回调函数被调用时,就表示已读取完毕了。这时的body_data
就是完整的body体数据
了。
表单输入,然后提交。
在后台打印出:
name=leo&age=30
我们兴奋的发现,post方法请求,得到的数据和GET的一致,虽然获取方式不同,GET的是通过url解析出请求数据,而POST是通过读取body体数据
获得。
很好!弄明白这点之后,下一节就可以着手开发post.js中间件了。
很赞哦! ( 0
)