node.js 原生方法中get和post的区别

1,828 阅读2分钟

一,接收差异

  • get
var http=require('http');
var url=require('url');
var util=require('util');
http.createServer(funxtion(req,res){
    res.WriterHeater(200,{"Content-type":"text/javascripts",charset=UTF-8})//状态码+响应头的属性
    //解析url
    var params=url.parse(res.url,true).query//parse将字符串转成对象,
                                            //req.url="/?url=123&name=321"
                                            //true表示params是{url:"123",name:"321"},false表示params是url=123&name=321
    res.write("网站名:" + params.name);
    res.write("\n");
    res.write("网站 URL:" + params.url);
    res.end();
    )}.listen(3000);//监听3000端口
 
    
}

  • post
var postHTML =
    '<html><head><meta charset="utf-8"><title>菜鸟教程 Node.js 实例</title></head>' +
    '<body>' +
    '<form method="post">' +
    '网站名: <input name="name"><br>' +
    '网站 URL: <input name="url"><br>' +
    '<input type="submit">' +
    '</form>' +
    '</body></html>';
http.createServer(function(req,res){
    var body=" ";
    req.on('data',function(chunt){
        body+=chunt;})
    req.on('end',function(){
        body=querystring.parse(body);
        console.log("body:"+body)
        res.writeHeader(200,{"Content-type":'text/javascript;charset=UTF-8'})
        if(body.name && body.url) { // 输出提交的数据
            res.write("网站名:" + body.name);
            res.write("<br>");
            res.write("网站 URL:" + body.url);
        } else {  // 输出表单
            res.write(postHTML);
        }
        res.end();
    })
}).listen(3000);

区别表现如下:

  1. get是从服务器上获取数据,post是向服务器传送数据。
  2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTMLHEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
  3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
  4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
  5. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。 通常情况下: 超链接和浏览器的路径使用get请求
    post请求数据不在url中