我有一个scipt标记,其中我通过axios向路由发出发布请求.Axios没有通过该参数发送参数。 这是axios的代码:
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script type="text/javascript">
const data={'firstName':"sai"}
axios({
url: "/",
method: "post",
data: data,
})
.then(response => {
console.log(response);
})
.catch(error => console.error(error));
</script>
这是事物的明显方面:
app.post("/",function(req,res){
console.log("post route");
console.log(req.body);
})
我是控制台,在req.body的帮助下记录来自发布请求的数据(我的body解析器也工作正常,并通过其他常规形式进行了测试).req到达了发布路由。主体为空时始终记录“ {}”。 请帮我解决这个问题。
答案 0 :(得分:2)
选项1: 定义配置对象
let config = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
}
}
必填:对参数使用数组,对'application / x-www-form-urlencoded'使用js对象
const params = new URLSearchParams();
params.append('PARAM1', 'VALUE1');
params.append('PARAM2', 'VALUE2');
电话留言
axios.post( uri, params, config )
或
axios({
url,
headers: { 'content-type': 'application/x-www-form-urlencoded' }
data: params
})
选项2: 创建一个api实例(可选)并设置默认的内容类型
const api_local = axios.create({
baseURL: 'http://localhost:1000/myapi',
});
api_local.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
必填:对参数使用数组,对'application / x-www-form-urlencoded'使用js对象
const params = new URLSearchParams();
params.append('PARAM1', 'VALUE1');
params.append('PARAM2', 'VALUE2');
电话留言
api_local.post( uri, params )
答案 1 :(得分:1)
我的人体分析仪也工作正常。经过其他正常形式的测试
普通表单提交编码为multipart/form-data
或application/x-www-form-urlencoded
的数据。
Axios默认以application/json
的形式提交数据。
您需要一个不同的正文解析器。一种支持JSON。