首页 > 解决方案 > 查询字符串(qs)模块不在nodejs中解析?

问题描述

大家,我是 NODEJS 的初学者我正在通过邮递员的 post 请求发送数据有时我正在使用 querystring 模块。我正在解析 post 数据。我想在这段代码中打印用户名和密码。但它不是打印。任何人都可以解决这个问题吗?提前致谢...

"use strict";
let http=require('http');
let url=require("url");
let qs=require("querystring");
let port=process.env.PORT||8086;
let routes={
 'GET':
 {
      '/':(req,res,urldata)=>
      {
        res.statusCode=200;
        res.setHeader('content-Type','text/plain');
        res.end("I 'm sending get request data " );
      },
      '/api/getinfo':(req,res,urldata)=>{
        res.statusCode=200;
        res.setHeader('content-Type','application/json');
        console.log(JSON.stringify(urldata.query));
        res.end(JSON.stringify(urldata.query));
      }
 },
 'POST':
 {
     '/':(req,res,urldata)=>{
        res.statusCode=200;
        res.setHeader('content-Type','text/plain');
        res.end("I 'm sending post request " );
     },
     '/api/login':(req,res,urldata)=>{
       let body='';
        req.on('data',(c)=>{
            body+=c;
       });
       req.on('end',()=>{
           let par=qs.parse(body);
           console.log("USERNAME POST:"+par['user']);
           console.log("PASSWORD POST:"+par['pass']);
           res.end("ok I'm getting post data");
       });
     }
 },
 'NA':(req,res)=>{
      res.statusCode=404;
      res.end("Content Not found");
 }
}
function handler(req,res)
{
    if(req.url!="/favicon.ico")
    {
        let urldata=url.parse(req.url,true);
        console.log(urldata);
        console.log("Request Method:"+req.method);
        console.log("Request URL:"+req.url);
        console.log("Pathname:"+urldata.pathname);
        let a=routes[req.method][urldata.pathname];
       
        if(a!=undefined)
        {
            a(req,res,urldata);
        }
        else{
            routes['NA'](req,res);
        }
       
      
    }
}
let server=http.createServer(handler);
server.listen(port,()=>{
    console.log("server is listening on port",`${port}`);
});

标签: node.jsquery-string

解决方案


你应该使用: const par=JSON.parse(body)

而不是:让 par=qs.parse(body);

"use strict";
let http=require('http');
let url=require("url");
let qs=require("querystring");
let port=process.env.PORT||8086;
let routes={
 'GET':
 {
      '/':(req,res,urldata)=>
      {
        res.statusCode=200;
        res.setHeader('content-Type','text/plain');
        res.end("I 'm sending get request data " );
      },
      '/api/getinfo':(req,res,urldata)=>{
        res.statusCode=200;
        res.setHeader('content-Type','application/json');
        console.log(JSON.stringify(urldata.query));
        res.end(JSON.stringify(urldata.query));
      }
 },
 'POST':
 {
     '/':(req,res,urldata)=>{
        res.statusCode=200;
        res.setHeader('content-Type','text/plain');
        res.end("I 'm sending post request " );
     },
     '/api/login':(req,res,urldata)=>{
       let body='';
        req.on('data',(c)=>{
            body+=c;
       });
       req.on('end',()=>{
           const par=JSON.parse(body)
           console.log("USERNAME POST:"+par['user']);
           console.log("PASSWORD POST:"+par['pass']);
           res.end("ok I'm getting post data");
       });
     }
 },
 'NA':(req,res)=>{
      res.statusCode=404;
      res.end("Content Not found");
 }
}
function handler(req,res)
{
    if(req.url!="/favicon.ico")
    {
        let urldata=url.parse(req.url,true);
        console.log(urldata);
        console.log("Request Method:"+req.method);
        console.log("Request URL:"+req.url);
        console.log("Pathname:"+urldata.pathname);
        let a=routes[req.method][urldata.pathname];
       
        if(a!=undefined)
        {
            a(req,res,urldata);
        }
        else{
            routes['NA'](req,res);
        }
       
      
    }
}
let server=http.createServer(handler);
server.listen(port,()=>{
    console.log("server is listening on port",`${port}`);
});


推荐阅读