如果你要問我WebApi是干嘛,我只能說它是的給數(shù)據(jù)。哈哈哈哈哈,這幾天也才剛剛了解了解關(guān)于WebApi的知識,今天就來談?wù)劙伞?/p> 1.創(chuàng)建WebApi項目 第一步:選擇ASP.NET Web應(yīng)用程序 第二步:選擇WebApi,記得要取消勾選Https配置,點擊創(chuàng)建 第三步:創(chuàng)建完成后形成的項目結(jié)構(gòu) 這里和ASP.NET MVC的目錄結(jié)構(gòu)看起來有點類似,其實還是有很大的不同的 在這里View視圖其實不起什么作用。 下面來看看目錄結(jié)構(gòu)中有什么東西。 可以看到自動創(chuàng)建了兩個控制器分別是Home和Values(這里的Student和User是我自己創(chuàng)建的) 進去看看。需要注意的是這里Home和下面介紹的Values是不同的控制器,哪里不同呢?等一下就知道啦 Home控制器: Values控制器: 與Home控制器最大的區(qū)別就在于繼承的控制器前者是Controller、后者是ApiController 可以看到這里分別有幾個方法:Get(查詢)、Post(新增)、Put(修改)、以及Delete(刪除) [FromBody]在這里的作用就是只接受從data中傳遞過來的參數(shù),也就是其他傳參方法比如QueryString形式的方法無法獲取。 為什么系統(tǒng)自動幫我們創(chuàng)建了這四個方法呢? 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Net; 5 using System.Net.Http; 6 using System.Web.Http; 7 8 namespace Demo.Controllers 9 { 10 //WebAPI控制器 11 public class ValuesController : ApiController 12 { 13 // GET api/values 14 public IEnumerable<string> Get() 15 { 16 return new string[] { "value1", "value2" }; 17 } 18 19 // GET api/values/5 20 public string Get(int id) 21 { 22 return "value"; 23 } 24 25 // POST api/values 26 public void Post([FromBody]string value) 27 { 28 } 29 //FromBody指定數(shù)據(jù)來源必須是data中的數(shù)據(jù)而不是從QueryString過來的 30 // PUT api/values/5 31 public void Put(int id, [FromBody]string value) 32 { 33 } 34 35 // DELETE api/values/5 36 public void Delete(int id) 37 { 38 } 39 } 40 } 這里的原有還有追溯到創(chuàng)建WebApi項目的時候 那就是RESTful HTTP服務(wù)模板 通過RESTful語義定義的四個方法,可以通過ajax請求進行調(diào)用并獲得數(shù)據(jù)。 下面我們?nèi)?chuàng)建一個普通的Html頁面和一個Student Api控制器以及一個Student類 Student類: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 6 namespace Demo.Models 7 { 8 public class Student 9 { 10 public int Id { get; set; } 11 public string Name { get; set; } 12 } 13 } Student控制器方法: 在注釋中我也備注了RESTful使用規(guī)則和約束 1 using Demo.Models; 2 using System; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Net; 6 using System.Net.Http; 7 using System.Web.Http; 8 9 namespace Demo.Controllers 10 { 11 //WebAPI控制器 12 public class StudentController : ApiController 13 { 14 /// <summary> 15 /// Restful格式的數(shù)據(jù)提供方式 方法名要帶著Get 16 /// Restful風(fēng)格節(jié)省了方法名的編寫,但是不適合~Login登錄、上傳 、修改頭像、點贊等業(yè)務(wù)功能的實現(xiàn) 17 /// Restful只適合對某一個表的增刪改查 18 /// </summary> 19 /// <returns></returns> 20 public Student Get() 21 { 22 return new Student() { Id = 1, Name = "黃朝" }; 23 } 24 /// <summary> 25 ///Get不能省略 26 /// </summary> 27 /// <param name="name"></param> 28 /// <returns></returns> 29 public string Get(string name) 30 { 31 return "參數(shù)是:" + name; 32 } 33 34 public string GetAddress(string addname) { 35 return "地址參數(shù)是:" + addname; 36 } 37 /// <summary> 38 /// 在這里post是做新增操作 39 /// </summary> 40 /// <param name="stu">學(xué)生對象</param> 41 public void Post(Student stu) 42 { 43 44 } 45 /// <summary> 46 /// 修改操作 47 /// </summary> 48 /// <param name="id">修改的id</param> 49 /// <param name="stu">修改的對象</param> 50 public void Put(int id,Student stu) 51 { 52 53 } 54 /// <summary> 55 /// 刪除 56 /// </summary> 57 /// <param name="id">根據(jù)id的刪除</param> 58 public void Delete(int id) 59 { 60 61 62 } 63 } 64 } Html頁: 根據(jù)type不同的參數(shù),調(diào)用后臺Api的數(shù)據(jù)??梢宰鳛閷ο髤?shù)傳遞也可以根據(jù)id作為參數(shù)傳遞 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="Scripts/jquery-3.3.1.js"></script> <script> $.ajax({ url: "/api/Student", type: "get" }).done(function (data) { console.log(data) }) //$.ajax({ // url: "/api/Student", // type: "post", // data: { // ID: 1, // Name:"abc" // } //}).done(function () { // console.info("成功"); //}).fail(function () { // console.info("失敗"); //}) ///api/Student/1 1為Id //$.ajax({ // url: "/api/Student/1", // type: "put", // data: { // ID: 12, // Name:"lisi" // } //}).done(function () { // console.info("成功") //}).fail(function () { // console.info("失敗") //}) //$.ajax({ // url:"/api/Student/1" // type: "delete" //}).done(function () {rl: "/api/Student/1", // console.info("成功") //}).fail(function () { // console.info("失敗") //}) </script> </head> <body> </body> </html> 以上就是我對初次了解WebApi的一個學(xué)習(xí)總結(jié),如果以上內(nèi)容存在不足或錯誤代碼,請指出,謝謝。 |
|