webapi 参数传递详解

2021-04-08 15:27

阅读:360

标签:one   ring   ext   value   script   color   info   nbsp   别人   

原因

经常有朋友遇到webapi参数传递问题,自己也碰到过一些坑,在此记录下正确的姿势,简单参数传递相信没有人会有问题,容易出现问题的是对象参数和表单参数。

1、WebApi5.2.3有FromBody和无FromBody

 控制器代码如下:

 public class ValuesController : ApiController
    {
        // POST api/values
        [HttpPost]
        [Route("~/api/Values/Post")]
        public UserModel Post(UserModel value)
        {
            return value;
        }
        [HttpPost]
        [Route("~/api/Values/Put")]
        // PUT api/values/5
        public UserModel Put([FromBody]UserModel value)
        {
            return value;
        }
    }

    public class UserModel
    {
        public string UserName { get; set; }

        public string Password { get; set; }
    }

 

对应的JS请求代码如下,对于有FromBody的Put请求来说,两种请求方式都是可以的:

 

有图有真相

技术分享图片

 

2、Asp .Net Core 有FromBody和无FromBody

服务端代码如下:

public class ValuesController : Controller
    {
        // POST api/values
        [HttpPost]
        [Route("~/api/Values/Post")]
        public UserModel Post(UserModel value)
        {
            return value;
        }
        [HttpPost]
        [Route("~/api/Values/Put")]
        // PUT api/values/5
        public UserModel Put([FromBody]UserModel value)
        {
            return value;
        }
    }

    public class UserModel
    {
        public string UserName { get; set; }

        public string Password { get; set; }
    }

js请求代码有所不同,FromBody不再提供兼容支持 只能采用application/json方式提交:

 $(‘#btnPost‘).click(function () {
                $.ajax({
                    url: ‘/api/Values/Post‘,
                    data: {
                        UserName: ‘Admin‘,
                        Password: ‘123456‘
                    },
                    method: ‘POST‘,
                    dataType: ‘json‘
                }).done(function (result) {
                    $(‘#txtPost‘).val(JSON.stringify(result));
                })

            })
            $(‘#btnPostFromBody‘).click(function () {

                $.ajax({
                    url: ‘/api/Values/Put‘,
                    data: JSON.stringify({
                        UserName: ‘Admin‘,
                        Password: ‘123456‘
                    }),
                    method: ‘POST‘,
                    dataType: ‘json‘,
                    contentType: ‘application/json‘
                }).done(function (result) {
                    $(‘#txtPostFromBody‘).val(JSON.stringify(result));
                })

            })

调用结果:

技术分享图片

 

3、Asp .Net Core 之From表单

有时候难免有上传文件的需求,对象存储这个嘛有的时候客户不愿意多花钱或者把文件存到别人的服务器上,只能自己存了。为了少点垃圾文件还是和表单一起提交吧。

 

1

1

1

webapi 参数传递详解

标签:one   ring   ext   value   script   color   info   nbsp   别人   

原文地址:https://www.cnblogs.com/shya/p/9085468.html


评论


亲,登录后才可以留言!