WebApi传参总动员(一)

目前自己的工作和WebApi相关,免不了传入、接收参数。以前的老办法是从请求流中获取json,再反序列化,这中间有2个不能控制的地方,一个是流,一个是反序列化,都需要try,总感觉非常的不爽。因此对WebApi传参做了深入的研(bai)究(du)。

正常的WebApi有三种接收参数的方式:

1、以json字符串的形式传入。从请求的输入流获取传入的json字符串,再反序列化成自己需要的实体。利用的是Request.InputStream。

2、以url传参的形式传入。WebApi自动转换成对应的实体。类似于Form表单的提交,如name=aaa&pwd=bbb&token=xxx,需要请求头的ContentType=“application/x-www-form-urlencoded

3、以json字符串的形式传入,WebApi自动转换成对应的实体。需要请求头的ContentType="application/json"

先从最简单的string入手。逐一爬坑。

Web端

public class ValuesController : ApiController
    {
        [HttpPost]
        public string GetData(string name)
        {
            return "我爱" + name;
        }
    }

html端js

            $('#btn').click(function () {
                $.ajax({
                    type: "post",
                    url: "http://localhost:7601/api/values/GetData",
                    data: "刘亦菲",
                    success: function (r) {
                        alert(r);
                    }
                });
            });

结果碰到了第一个坑

  

结论:http://localhost:7601/api/values/GetData 和 http://localhost:7601/api/values/GetData?name=刘亦菲 是两个不同的url

将上面js中代码修改
            $('#btn').click(function () {
                $.ajax({
                    type: "post",
                    url: "http://localhost:7601/api/values/GetData?name=刘亦菲",
                    success: function (r) {
                        alert(r);
                    }
                });
            });

得到了自己想要的结果  

原文地址:https://www.cnblogs.com/luhuanong/p/4923871.html