asp.net webapi 使用小結

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   os   io   ar   

一星期前公司用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) {                            }        });

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.