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

问题描述:
在node.js中用建立服务器接口,在前端页面用axios发起get请求可以返回数据,用post请求返回的数据是空的 。
【express搭建接口,使用axios发起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.转换格式,然后再将请求头设置成'-Type': '/json',但是我试了,返回的还是空的数据 。
这个问题的原因应该是axios 提交的post请求是格式的,需要转换成Form Data 。
如果使用Form Data转换对象应该也可行,但是我觉得太麻烦了,要对传入的data里的每一项都进行处理 。
let data = http://www.kingceram.com/post/new FormData()data.append("username", this.username)data.append("password", this.password)
而且也得在前端进行操作,显得很冗余 。有没有直接在后端就把这个问题解决了?
解决方案:
在后端接口加入两行代码轻松解决:
const parser = require('body-parser')app.use(parser.json())
利用body-这个中间件,在路由接受到请求的数据以及响应数据之前,就进行转换 。