node.js - 查询字符串(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}`);
});
解决方案
你应该使用: 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}`);
});
推荐阅读
- performance - LiteDb 生产高数据量的性能和限制
- python - 在 jupyterlab 项目中导入模块
- java - 将用户凭据也写入文件
- apache - 如何使用 .htaccess 用 @username 重写 URL
- java - 在循环中绘制不同大小的矩形
- pdf - 从 Adobe LiveCycle 升级 - 业务决策 6.0 或 Adobe AEM?
- google-schemas - Gmail 不显示餐厅预订卡
- python - 从 pythonw 运行一个进程,使用控制台启动 GUI
- html - Jquery可拖动并保存到数据库中
- video - 如何加快视频速度以缩短其长度并嵌入时间戳以表示录制时间?