1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > express搭建接口 使用axios发起post请求不到数据

express搭建接口 使用axios发起post请求不到数据

时间:2023-04-16 18:05:25

相关推荐

express搭建接口 使用axios发起post请求不到数据

问题描述:

在node.js中用express建立服务器接口,在前端页面用axios发起get请求可以返回数据,用post请求返回的数据是空的。

在网上搜到最多的解决方案是引入qs模块,但是我目前又没有用到vue,所以pass了。

第二多的就是设置请求头

axios({method: 'POST',url: 'http://127.0.0.1/api/post',data: {bookname:'水浒传'}headers: {'Content-Type': 'application/x-www-form-urlencoded'}}).then(function(res) {console.log(res);})

这次有数据返回了,然而却多了一个大括号和冒号,它把传入的参数当成key来解析了。

还有的说把传入的data用JSON.stringify转换格式,然后再将请求头设置成'Content-Type': 'application/json',但是我试了,返回的还是空的数据。

这个问题的原因应该是axios 提交的post请求是RequestPayload格式的,需要转换成Form Data。

如果使用Form Data转换对象应该也可行,但是我觉得太麻烦了,要对传入的data里的每一项都进行处理。

let data = new FormData()data.append("username", this.username)data.append("password", this.password)

而且也得在前端进行操作,显得很冗余。有没有直接在后端就把这个问题解决了?

解决方案:

在后端接口加入两行代码轻松解决:

const parser = require('body-parser')app.use(parser.json())

利用body-parser这个中间件,在路由接受到请求的数据以及响应数据之前,就进行转换。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。