【问题标题】:Handling POST request with axios and express使用 axios 和 express 处理 POST 请求
【发布时间】:2016-09-29 18:47:55
【问题描述】:

我似乎无法弄清楚为什么当我使用 axios.post 方法提供数据主体时,它在我的服务器上被捕获为未定义。

我有以下带有sn-ps代码的文件:

app.js:

auth(user, pass){
    return axios.post('http://localhost:3000/auth', {
        username: user, 
        password: pass
    })
}

server.js:

app.post('/auth', (req, res) => {
    console.log(req.body) //undefined
    res.end("Success")  
})

我如何使用 axios 正确处理 POST 数据?我错过了什么吗?

成功返回正常,但用户名/密码似乎在请求中的任何地方都找不到

【问题讨论】:

  • 您是否在任何请求处理程序处理 xhr 请求之前使用 express 中的中间件?喜欢:app.use('/*', function(req,res,next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Credentials", "true"); res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT"); res.header("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"); next(); });
  • 啊,是的,它似乎使用了 webpack-dev-middleware 和 webpack-hot-middleware。虽然我不相信这些会影响 POST 处理。我可能需要进一步挖掘,因为我使用的是boilerplate
  • 其实它好像也在使用bodyParser来处理POST请求。
  • 原来我所有的中间件都安装错了;在使用任何中间件之前,我试图在我的 server.js 文件中处理 POST。感谢您的中间件提示!你就是炸弹!

标签: javascript express axios


【解决方案1】:

我没有足够的声誉来评论 Jim 的上一篇帖子,但我遇到了同样的问题,并且解决了它!

澄清一下:在我的 server.js 文件中,我在这些之前需要我的路由:

这些首先:

app.use(express.urlencoded({ extended: true }));
app.use(express.json());

然后这个:

app.use(routes);

【讨论】:

    【解决方案2】:

    添加以下解析器来处理请求的数据

    var bodyParser = require('body-parser');
    app.use(bodyParser.urlencoded({ extended: true }));
    app.use(bodyParser.json())
    

    【讨论】:

    • 为我解决了类似的问题
    【解决方案3】:

    原来我所有的中间件都安装错了;在使用任何中间件之前,我试图在 server.js 文件中处理 POST。

    【讨论】:

    • 我也有类似的问题,但不明白你是怎么解决的。
    • 抱歉回复晚了。对于我的情况,我必须确保 express 在设置任何路由之前处理所有中间件。因此,请确保在运行任何 GET 或 POST 路由之前运行所有 app.use([middleware]) 配置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 2020-06-16
    • 2020-05-31
    • 2018-05-12
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多