express.js get 方法无法获取 req.body 值

Posted

技术标签:

【中文标题】express.js get 方法无法获取 req.body 值【英文标题】:express.js get method cannot get req.body value 【发布时间】:2021-05-24 11:02:24 【问题描述】:

我使用 vue3、vuex、express.js 和 mysql。在下面的路由器获取方法中,我调用“console.log(req.body)”并显示“[object Object]”,我调用“console.log(req.body.userid)”并显示“undefined”。

router.get('/',async function(req,res)
    const userId = req.body.userid;
    console.log("req body is: "+req.body);
    console.log("req.body.userid is: "+req.body.userid);
    .....

在下面的方法中,我将 userid 值作为 json 对象传递。我叫“console.log(”post userid: “+userinfo.userid);”并显示正确的值“1”;

      async getsp()         
        var userinfo = JSON.parse(localStorage.getItem('user'));
        console.log("post userid: "+userinfo.userid);
        var userid = userinfo.userid;
        var obj = userid; 
        return await axios.get('//localhost:8081/getSp',obj)
        .then(...)
      ,

在我使用body-parser的主路由文件中,文件上下文如下:

require("dotenv").config();

const express = require('express');      
const bodyParser = require('body-parser');
var cors = require('cors');

const signup = require('./userSignUp');
const login = require('./userLogin');
const createEvsp = require('./createEvsp');
const getSp = require('./getSp');
//const createFile = require('./createFile');

const app = express();        
app.use(bodyParser.urlencoded( extended: true ));
app.use(bodyParser.json())
app.use(cors()) 
app.use(express.json());

app.use(
   express.urlencoded(
   extended: true
   )
 );
 app.use("/signup",signup);
 app.use("/dologin",login);
 app.use("/createEvsp",createEvsp);
 app.use("/getSp",getSp);
 //app.use("/createFile",createFile);

 app.listen(8081,function ()     
     console.log('Server running at 8081 port');
 );

【问题讨论】:

嗨,Amantuer,为了更好地理解您的问题,您确定要使用 GET 方法而不是 POST 吗? @Sayf-Eddine 我想根据用户信息从服务器中搜索并获取值,那么使用get方法传递用户信息并取回值是否正确? 如果您只根据用户信息从服务器中搜索值,为什么不使用快速中间件/:userid,您将使用req.params.userid 访问参数?因为根据您要查找的内容,我认为这是最好的方法。根据http标准发送数据我们一般使用POST请求。 【参考方案1】:

问题在于对 HTTP 方法的理解以及 express 的工作原理

为了解决这个问题,需要使用 express 中间件 /:userid 来访问使用 req.params.userid 的参数

根据http标准发送数据我们一般使用POST请求。 堆栈中有一个很好的答案Information about Get HTTP Request

赛夫-艾丁

【讨论】:

以上是关于express.js get 方法无法获取 req.body 值的主要内容,如果未能解决你的问题,请参考以下文章

Express.js 在控制器中获取 http 方法

如何记录 express.js POST 参数 [重复]

无法使用 Express.js 从请求中获取 POST 正文

express.js 中 app.use 和 app.get 的区别

无法在 LAN 网络上托管 Express.js 应用程序

如何使用 Express.js 指定 HTTP 错误代码?