node 怎么获取get的参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node 怎么获取get的参数相关的知识,希望对你有一定的参考价值。

参考技术A 你好 直接通过req.query就能获得

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();//写在互调函数外面会报错的哟
            }
        })
    }

}

 

以上是关于node 怎么获取get的参数的主要内容,如果未能解决你的问题,请参考以下文章

Django怎么获取get请求里面的参数

node.js http获取请求参数[重复]

在 node.js 中的 HTTP GET 中设置 URL 参数的默认值

如何获取大量 GET 参数并根据它们干净地过滤查询?

php如何获取url的参数

Flask获取请求参数