asp.net webapi 使用小结

一星期前公司用webapi处理一些事情,自己总结一下用法。

1.创建一个空的webapi会默认有一下几个方法。

    public class ValueController : ApiController
    {
        // GET api/value
        public IEnumerable<string> Get()
        {

            return new string[] { "value1", "value2" };
        }

        // GET api/value/5
        public string Get(int id)
        {

            return "value";
        }

        // POST api/value
        public void Post([FromBody]string value)
        {

        }

        // PUT api/value/5
        public void Put(int id, [FromBody]string value)
        {

        }

        // DELETE api/value/5
        public void Delete(int id)
        {

        }
    }

第一个IEnumerable<string> Get()

      $.ajax({
            url: "/api/value",
            type: "get",
            success: function (data) {
                alert(data);
            }
        });

第二个 string Get(int id)

 

    $.ajax({
            url: "/api/value/1",
            type: "get",
            success: function (data) {
                alert(data);
            }
        });

 

第三个 void Post([FromBody]string value) ,调用的时候比较特殊,我在data前面的键值给空的时候才能把值传输到后台去。

 

    $.ajax({
            url: "/api/value",
            type: "post",
            data: { ‘‘: "test" },
            success: function (data) {
                //alert(data);
            }
        });

 

或者改造后台接收方法。用实体来接收值,可以接收到。

        public class PostModel 
        {
            public string value { get; set; }
        }
        public string Post([FromBody]PostModel value)
        {
            return "ok";
        }
        $.ajax({
            url: "/api/value",
            type: "post",
            data: { ‘value‘: "test" },
            success: function (data) {
                //alert(data);
            }
        });

第四个 string Put(int id, [FromBody]PostModel value) 调用的时候,id必须包含在路径中,才能获取到。放在接收的实体中也是没用的。

    $.ajax({
            url: "/api/value/1",
            type: "Put",
            data: { ‘value‘: "test" },
            success: function (data) {
                //alert(data);
            }
        });

第五个 string Delete(int id) 调用跟第一个唯一的区别需要标明type:“Delete”

这是默认的几种使用方法,但是自己使用的时候感觉约束蛮多。然后我把它们全删了。

用法上不规范,但是用起来感觉比较舒服,感觉代码还是怎么写起来舒服怎么来吧,自己在api路由这里加了一项{action}这样用起来看着跟mvc区别不大。

    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }

 代码就可以这样写了。

    public class ValueController : ApiController
    {

        public List<string> GetList()
        {

            return new List<String> { "value1", "value2" };
        }

        public List<string> GetTestList()
        {

            return new List<String> { "value1", "value2" };
        }

    }
       $.ajax({
            url: "/api/value/GetTestList",
            type:"post",
            success: function (data) {
                
            }
        });

对于webapi传参数,默认的都是从路径里提取的也就是get方式的传参。

     public List<string> GetList(string id,string name)
        {

            return new List<String> { "value1", "value2" };
        }
    $.ajax({
            url: "/api/value/GetList",
            type: "get",
            data: { "id": "1", "name": "三" }, success: function (data) { } });

    $.ajax({
            url: "/api/value/GetList?id=1&name=三",
            type: "get",
            success: function (data) {
                
            }
        });
 

如果需要传的字符串参数很多,get方式会报错,可以用post方式,这里需要注意的是不能用get开头,要么它只认get提交

    public class PostModel
    {
        public string value { get; set; }
        public string id{ get; set; }
    }

        public List<string> List([FromBody]PostModel value)
        {

            return new List<String> { "value1", "value2" };
        }
    $.ajax({
            url: "/api/value/List",
            type: "post",
            data: { "id": "1", "value": "01234567890123456789012345678901234567890123456789" },
            success: function (data) {
                
            }
        });

 

asp.net webapi 使用小结,布布扣,bubuko.com

asp.net webapi 使用小结

上一篇:Ubuntu 文件移动


下一篇:Response.Redirect 打开新窗体的两种方法