6webapi中通过POST请求传参的问题
使用axios向后端webapi服务器发请求,后端webapi除了要在控制器上ApiController特性外,在action里声明的参数类型应该用对象来接收,否则是收不到值的。因为axios传过去的是json对象格式。
主要是axios发送的数据是Request Payload数据。而jquery发送的是Form Data类型。是表单格式。所以api可以声明变量一个个接收(但是控制器不能加ApiController)。
在以前都是用到表单格式进行发送post请求的。
如:
如:
1. 前端通过axios发送数据
axios.post(
"http://localhost:5000/Login",
{userName:this.userName,
userNo:this.userNo,
userPassword:this.password}).then(response=>{
console.log(response);
});
查看发送的数据

后端拿不到值:

2.前端通过Jquery的$.ajax发送数据
$.ajax({
type:"post",
url:"http://localhost:5000/Login",
data: {userName:this.userName,
userNo:this.userNo,
userPassword:this.password}
});
查看发送的数据

但是后台还是收不到值

解决方式:注释掉ApiController

然后再发送请求,即可看到有数据。

但是,如果是用axios发送即使注释掉ApiController还是收不到数据。
通过查看它们向服务器发送的数据即可看到,它们的数据格式不相同。一个是JSON对象格式,一个是表单格式。
但是,jquery发送的数据格式也能通过对象接收,前提是后端注释掉ApiController。
public string Insert(Users users)
{
return _userBLL.AddUser(users);
}
3.解决用axios发送post请求接收不到数据
①后端加上ApiController,然后用对象接收即可收到数据。
因为ApiController特性底层会帮我们推动收到的请求里的数据的类型。
②在net3.1以前,没有ApiController特性,就在整体结果前加[FromBody],表示获取请求里的body整体数据。如:


浙公网安备 33010602011771号