若是你要問我WebApi是幹嗎,我只能說它是的給數據。哈哈哈哈哈,這幾天也纔剛剛瞭解瞭解關於WebApi的知識,今天就來談談吧。html
1.建立WebApi項目jquery
第一步:選擇ASP.NET Web應用程序ajax
第二步:選擇WebApi,記得要取消勾選Https配置,點擊建立api
第三步:建立完成後造成的項目結構post
這裏和ASP.NET MVC的目錄結構看起來有點相似,其實仍是有很大的不一樣的學習
在這裏View視圖其實不起什麼做用。url
下面來看看目錄結構中有什麼東西。spa
能夠看到自動建立了兩個控制器分別是Home和Values(這裏的Student和User是我本身建立的)3d
進去看看。須要注意的是這裏Home和下面介紹的Values是不一樣的控制器,哪裏不一樣呢?等一下就知道啦code
Home控制器:
Values控制器:
與Home控制器最大的區別就在於繼承的控制器前者是Controller、後者是ApiController
能夠看到這裏分別有幾個方法:Get(查詢)、Post(新增)、Put(修改)、以及Delete(刪除)
[FromBody]在這裏的做用就是隻接受從data中傳遞過來的參數,也就是其餘傳參方法好比QueryString形式的方法沒法獲取。
爲何系統自動幫咱們建立了這四個方法呢?
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指定數據來源必須是data中的數據而不是從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 }
這裏的原有還有追溯到建立WebApi項目的時候
那就是RESTful HTTP服務模板
經過RESTful語義定義的四個方法,能夠經過ajax請求進行調用並得到數據。
下面咱們去建立一個普通的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使用規則和約束
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格式的數據提供方式 方法名要帶着Get 16 /// Restful風格節省了方法名的編寫,可是不適合~Login登陸、上傳 、修改頭像、點贊等業務功能的實現 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 "參數是:" + name; 32 } 33 34 public string GetAddress(string addname) { 35 return "地址參數是:" + addname; 36 } 37 /// <summary> 38 /// 在這裏post是作新增操做 39 /// </summary> 40 /// <param name="stu">學生對象</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">根據id的刪除</param> 58 public void Delete(int id) 59 { 60 61 62 } 63 } 64 }
Html頁:
根據type不一樣的參數,調用後臺Api的數據。能夠做爲對象參數傳遞也能夠根據id做爲參數傳遞
<!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的一個學習總結,若是以上內容存在不足或錯誤代碼,請指出,謝謝。