使用 axios 和 express 处理 POST 请求

Posted

技术标签:

【中文标题】使用 axios 和 express 处理 POST 请求【英文标题】:Handling POST request with axios and express 【发布时间】: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。感谢您的中间件提示!你就是炸弹! 【参考方案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]) 配置

以上是关于使用 axios 和 express 处理 POST 请求的主要内容,如果未能解决你的问题,请参考以下文章

Express - 使用 axios 返回具有命名路由参数的某些文档

发送带有 axios 和强大的图像( nodejs -> express )

使用 express 和 axios 反应应用程序在呈现数据时出错

ReactJS 和 Express 与 Axios 返回 404

如何使用 Express 和 Axios 从我的 get 请求发送响应对象到前端?

使用 React 和 Axios 从 Express API 下载文件