nodejs路由--get和post请求

get请求post请求

nodejs在路由这块做得还是不错的,经常接触到的有get请求和post请求,我们知道nodejs是很难提供静态服务的,如果用原生的nodejs的会比较麻烦,以下提供代码,介绍原生nodejs是怎样处理get和post请求的
post请求:
node为了追求极致,它是一个小段一个小段接收的。接受了一小段,可能就给别人去服务了。防止一个过大的表单阻塞了整个进程,下面是post请求接收的一个公式:
var alldata = "";
     req.addListener("data",function(chunk){
            alldata += chunk;
        });
       //全部传输完毕
      req.addListener("end",function(){
             console.log(alldata.toString());
             res.end("success");
         });

从上面公式可以看出,nodejs接收表单是分为两部分要有addListener,一个是不断接收数据块,一个是表示全部接收完毕,所以原生写POST处理,比较复杂,要写两个监听。文件上传业务比较难写,文件上传要用到第三方模块,formidable。注意:只要涉及文件上传,那么form标签要加一个属性:,否则上传为空

<form action="http://127.0.0.1/dopost" method="post" enctype="multipart/form-data">

接下来这段代码就是使用formidable模块接收表单上传图片

var http = require("http");
var formidable = require('formidable');
var util = require("util");//一个工具类


//创建服务器
var server = http.createServer(function(req,res){
    //如果你的访问地址是这个,并且请求类型是post
    if(req.url == "/dopost" && req.method.toLowerCase() == "post"){
        //Creates a new incoming form.
        var form = new formidable.IncomingForm();
        //设置文件上传存放地址
        form.uploadDir = "./uploads";
        //执行里面的回调函数的时候,表单已经全部接收完毕了。
        form.parse(req, function(err, fields, files) {
            if(err){
                throw err;
            }
            console.log(fields);
            console.log(files);
            console.log(util.inspect({fields: fields, files: files}));
            //所有的文本域、单选框,都在fields存放;
            //所有的文件域,files
            res.writeHead(200, {'content-type': 'text/plain'});
            res.end("成功");
        });
    }
});
server.listen(80,"127.0.0.1");
get请求
get请求是比较简单的,
var server = http.createServer(function(req,res){
    if(req.url === '/admin'){
        res.write('admin页面');
        res.end();//一定要写res.end()否则浏览器就会认为这个请求 //直都没有结束 
    }   
}

之前说过如果url有一些参数要取出来,可以引用url,或者path模块,里面有接口可以帮助取到url里面的查询参数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值