web API請求與參數獲取


總結webAPI的常用請求方法與后台參數的獲取:

 

一:get請求:(會將所以參數拼接到URL里面)

1:基礎類型:string  a=“hello” , 前端無論你是寫到ajax里面的data屬性還是直接拼接到URL里面,后台直接string a獲取;

[HttpGet]

public JObject AddUserInfo(string a)

{.........}

2:實體類型:(1)使用FromUri關鍵字:前端寫到ajax里面的data屬性里面提交,如data:{
      Id:"1",
      Name:"lsm",
      Old:"25",
    }

后台采用實體接收,先定義實體,屬性名稱需要和前台傳過來的屬性名稱一致,使用【FromUri】關鍵字接收,

如模型定義為 public class UserModel
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string Old { get; set; }
    }

接口寫成:

[HttpGet]

public JObject AddUserInfo([FromUri]UserModel userInfo)

{.........}

(2)不使用FromUri關鍵字

前台將對象序列化成字符串:data: { strQuery: JSON.stringify({Id:"1",
      Name:"lsm",
      Old:"25",})}

后台采用字符串接收:參數名需和前台傳過來的一致,並再序列化json對象

 接口寫法 [HttpGet]

    public string GetByModel(string strQuery)
    {
       UserModel oData = Newtonsoft.Json.JsonConvert.DeserializeObject(strQuery);
       。。。。
    }
3:若web API的接口方法名稱以get開頭的時候,可以省略[HttpGet]過濾
二:post請求
1:基礎類型:data: { "": "Jim" },注意這里不能寫key值,否則后台獲取到的值將為空,后台使用[FromUri]關鍵字獲取
[HttpPost]
     public bool SaveData([FromBody]string NAME)
     {
        return true;
     }
2:多個基礎類型數據參數
前台寫法:
data:{
      Id:"1",
      Name:"lsm",
      Old:"25",
    }
后台取法:使用dynamic關鍵字
    [HttpPost]
    public object SaveData(dynamic obj)
    {
        var strName = Convert.ToString(obj.NAME);
        return strName;
    }
3:單個實體類型:注意此時不能指定contentType為appplication/json,應當默認的application/x-www-form-urlencoded,否則將取不到數據
前台寫法
data:{
      Id:"1",
      Name:"lsm",
      Old:"25",
    }
后台直接由實體接收:
[HttpPost]
   public bool SaveData(UserModel oData)
   {
       return true;
   }
4: 單個實體類型:前台指定contentType為appplication/json,必須將json對象序列化在傳輸
前台寫法
postdata:{
      Id:"1",
      Name:"lsm",
      Old:"25",
    }
data: JSON.stringify(postdata),
后台直接由實體接收:
[HttpPost]
   public bool SaveData(UserModel oData)
   {
       return true;
   }
 
5:基礎類型+實體:前台定contentType為appplication/json,后台使用dynamic關鍵字接收
前台:
postdata:{
      Id:"1",
      Name:"lsm",
      Old:"25",
    }
data: JSON.stringify({NAME:"Lilei", Charging:postdata}),
后台:
[HttpPost]
     public object SaveData(dynamic obj)
     {
         var strName = Convert.ToString(obj.NAME);
         var oCharging = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(obj.Charging));
         return strName;
     }
6:數組為參數:前台指定contentType為appplication/json
前台:
arr:["2","3","3","5"]
data: JSON.stringify(arr),
后台:
  [HttpPost]
    public bool SaveData(string[] ids)
    {
         return true;
    }
 
7:實體集合:前台指定contentType為appplication/json
前台
var arr = [
        { ID: "1", NAME: "Jim", CREATETIME: "1988-09-11" },
        { ID: "2", NAME: "Lilei", CREATETIME: "1990-12-11" },
        { ID: "3", NAME: "Lucy", CREATETIME: "1986-01-10" }
    ];
 
data: JSON.stringify(arr),
后台:
 [HttpPost]
    public bool SaveData(List lstCharging)
    {
       return true;
    }
三:put請求機制和post一樣
四:delete請求機制和post一樣


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM