• node基础11:接受参数


    1.接收参数

    在Node中接受GET/POST请求的参数不像PHP那样,在PHP中直接有全局变量$_GET,$_POST来接受url,或者请求体重的参数。

    在node中接受GET参数使用url.parse(req.url, true).query可以获取请求参数,使用queryString.parse(data)来从请求体中来获取字段。

    // server.js
    var http = require("http");
    var url = require('url');
    var router = require('./router');
    
    http.createServer(function(req, res){
        if ( req.url !== '/favicon.ico'){
            pathname = url.parse(req.url).pathname.replace(///,'');
            console.log(pathname);
            try {
                router[pathname](req, res);
            } catch(e) {
                console.log('error:'+e);
                res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
                res.write(e.toString());
                res.end();
            };
        }
    }).listen(3000);
    console.log("server running at http:127.0.0.1:3000");
    /**
     * router.js
     */
    var fs = require('fs');
    var url = require('url');
    var querystring = require('querystring'); //post需要导入
    
    module.exports = {
        login: function(req, res){
    
            /*****  GET 为同步获取参数 ***/
            /* GET接受参数
                var rdata = url.parse(req.url, true).query;
                console.log(rdata);
                if (rdata['email']!=undefined) {
                    console.log(rdata['email']);
                }
            */
            /*****  GET 为同步获取参数 ***/
    
            /**************POST***********异步*********************/
            var post ='';
            req.on('data', function(chunk){
                post += chunk;
            });
            req.on('end', function(){
                post = querystring.parse(post);
                console.log('收到参数:'+post['username']); //因为这里是异步,所以不能使用 res.write();
                console.log('收到参数:'+post['password']);
                //console.log('收到参数:'+post); // Cannot convert object to primitive value
                // *** 这里会报错哟!!!! ***
    
    
                
                fs.readFile('./login.html', function(err, data){
                    if( err){
                        console.log(err);
                        res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'})
                        res.write(err.toString());
                        res.end();
                    } else {
                        res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'})
                        res.write(data);
                        res.end();
                    }
                })
            })
            /*************************异步*********************/
    
    
        },
        register:function(req, res){
            fs.readFile('.register.html', function(err, data){
                if(err) {
                    console.log(err);
                    res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'})
                    res.write(err.toString());
                    res.end();
                    return;
                } else{
                    res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
                    res.write(data);
                    res.end();
                }
            })
        },
        showImage:function(req, res){
            fs.readFile('./test.png',function(err, data){
                if (err) {
                    console.log(err);
                    return;
                } else{
                    console.log("开始读取图片");
                    res.writeHead(200, {'Content-Type':'image/jpeg'});
                    res.write(data);
                    res.end();//写在互调函数外面会报错的哟
                }
            })
        }
    
    }
  • 相关阅读:
    方法
    属性
    Cocoapods完整使用篇
    这样好用的ReactiveCocoa,根本停不下来【转载】
    OS开发之旅之App的生命周期【转载】
    ios 推送证书没有密钥 解决方案【转载】
    移动应用开发测试工具Bugtags集成和使用教程【转载】
    MagicalRecord使用教程【转载】
    GIT客户端的使用【原创】
    iOS开发系列--让你的应用“动”起来【转载】
  • 原文地址:https://www.cnblogs.com/noper/p/6254291.html
Copyright © 2020-2023  润新知