Asp.Net WebApi Post請求整理(一)

來源:互聯網
上載者:User

標籤:ebs   年齡   後台   newton   from   query   web   title   success   

Asp.Net WebApi+JQuery Ajax的Get請求整理

一、總結

1.WebApi 預設支援Post提交處理,返回的結果為json對象,前台不需要手動還原序列化處理。
2.WebApi 接收Post提交參數需要指定([FromBody] string name)
3.WebApi 中如果只接收一個基礎型別參數,不能指定key的名稱
4.WebApi Post請求Action只能接收一個參數,也就是說一個Action中[FromBody]僅可指定一次
5.WebApi Post請求處理多個參數可以使用類對象方式接收參數例如:Student
6.在接收Post參數時,如果不想定義類,可以使用Newtonsoft.Json.Linq的JObject json對象容器接收參數
7.(不推薦使用)此接收參數可以使用dynamic本質是使用的JObject,但是提交參數需要指定字串類型,contentType: ‘application/json‘,類似WebServer中的指定方式
8.在WebApi的Post請求處理中,背景Action名稱不能使用“GetXXX”方式命名

二、驗證代碼

1.單個參數傳遞

Post擷取請求參數需要指定參數來源 [FromBody],

Post方式提交時,Action的名稱不能使用‘Get‘名稱開頭,

如果只接收一個基礎型別參數,不能指定key的名稱

後台:

/// <summary>/// Post擷取請求參數需要指定參數來源 [FromBody]/// </summary>/// <param name="name"></param>/// <returns></returns>public string ShowName([FromBody] string name){    return $"您傳入的名字:‘{name}’";}public Dictionary<string, string> FindList([FromBody] bool IsShow){    Dictionary<string, string> dict = new Dictionary<string, string>();    if (IsShow)    {        dict.Add("name1", "張三");        dict.Add("name2", "李四");    }    return dict;}

JavaScript:

$.post(‘/api/postuser/showname‘, {    ‘‘: ‘張三丰‘}, function (data) {    console.info(data);    alert(data);});$.post(‘/api/postuser/FindList‘, {    ‘‘: true}, function (data) {    console.info(data);    alert(data);});

二、多個參數傳遞

1.指定類類型 Student

後台:

public class Student{    public string Name { get; set; }    public int Age { get; set; }}
/// <summary>/// Post擷取參數可以接收物件類型,接收多個參數/// </summary>/// <param name="stu"></param>/// <returns></returns>public string ShowName2([FromBody] Student stu){    return $"‘{stu.Name}‘的年齡為:{stu.Age}";}

javascript:

$.post(‘/api/postuser/showname2‘, {    name: ‘張三丰‘,    age: 19}, function (data) {    console.info(data);    alert(data);});

2.使用JObject

後台:

/// <summary>/// 在接收Post參數時,如果不想定義類,可以使用Newtonsoft.Json.Linq的JObject json對象容器接收參數/// </summary>/// <param name="obj"></param>/// <returns></returns>public object ShowName3([FromBody] JObject obj){    return new { name = obj["name"], age = obj["age"], success = true };}

javascript:

//如果使用JObject,使用對象提交或者使用字串提交後台都能擷取成功$.post(‘/api/postuser/showname3‘, {    name: ‘張三丰‘,    age: 19}, function (data) {    console.info(data);    alert(data);});

3.使用dynamic(不推薦)

後台:

/// <summary>/// 在接收Post參數時,如果前台傳入參數為一個字串,可以使用dynamic類型接收,不需要指定[FromBody]/// 此處obj的真正類型:FullName = "Newtonsoft.Json.Linq.JObject"/// </summary>/// <param name="obj"></param>/// <returns></returns>public object ShowName3(dynamic obj){    return new { name = obj["name"], age = obj["age"], success = true };}

javascript:

//需要指定參數類型:contentType: ‘application/json‘,類似WebServer中的指定方式$.ajax({    url: ‘/api/postuser/showname3‘,    type:‘post‘,    contentType: ‘application/json‘,    data: JSON.stringify({ name: ‘張三丰‘, age: 19 }),    success: function (data) {        console.info(data);        alert(data);    }});

 

 

更多參考:

Asp.Net WebApi Get請求整理(一)

Asp.Net WebAPI Get提交、Post提交處理

Asp.Net WebApi Action命名中已‘Get’開頭問題

Asp.Net WebApi Post請求整理(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.