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);
                });

查看发送的数据
image

后端拿不到值:

image

2.前端通过Jquery的$.ajax发送数据

                $.ajax({
                    type:"post",
                    url:"http://localhost:5000/Login",
                    data: {userName:this.userName,
                    userNo:this.userNo,
                    userPassword:this.password}

                });

查看发送的数据
image

但是后台还是收不到值
image

解决方式:注释掉ApiController

image

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

但是,如果是用axios发送即使注释掉ApiController还是收不到数据。
通过查看它们向服务器发送的数据即可看到,它们的数据格式不相同。一个是JSON对象格式,一个是表单格式。

但是,jquery发送的数据格式也能通过对象接收,前提是后端注释掉ApiController。

  public string Insert(Users users)
        {
            return _userBLL.AddUser(users);
        }

3.解决用axios发送post请求接收不到数据

①后端加上ApiController,然后用对象接收即可收到数据。
因为ApiController特性底层会帮我们推动收到的请求里的数据的类型。

②在net3.1以前,没有ApiController特性,就在整体结果前加[FromBody],表示获取请求里的body整体数据。如:
image

posted @   青仙  阅读(597)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示