WebApi笔记
WebApi有一段時間沒用了,這幾天用webapi做了一個接口供第三方調用,又重新折騰了下,做個筆記記錄下心得,防止遺忘。
1、webapi使用的RESTful風格的傳參方式,其實就是充分利用HTTP請求的格式來完成參數的傳遞。HTTP請求除了常用的get、post請求方式外,還有put、patch、delete請求方式。
2、后臺對應的限制傳參特性標簽有[HttpGet]、[HttpPost]、[HttpPut]、[HttpPatch]、[HttpDelete]。
3、在給方法起名字的時候,方法名稱前面最好加上對應的請求方式,比如Get***、Post***、Put***、Delete***。這樣即使不使用特性標簽,請求也能根據webapi的路由機制自動匹配對應的方法。
4、HttpPatch在webapi中是部分更新的意思,但要注意,由于MVC的模型綁定功能,在進行部分傳參的時候,會把未進行需要傳參的參數重裝為null。例如:只修改Name,則使用HttpPatch的時候,會把Email的值改成null。所以,在使用HttpPatch的時候,這一點需要特別注意。
5、如果不想使用[FromBody]這樣的形式傳參,可以使用dynamic定義參數。在這樣進行操作時候,前端傳遞的參數必須是json的形式,而且要添加contentType:'application/json'參數。具體使用方式請參考put傳參的代碼。
?
?View:
1 <html> 2 <head> 3 <meta name="viewport" content="width=device-width" /> 4 <title>Index</title> 5 <script src="~/Scripts/jquery-1.10.2.min.js"></script> 6 <script> 7 $(function () { 8 $('#btn_get').click(function () { 9 $.ajax({ 10 url: '/api/WebApiDemo', 11 type: 'get', 12 data: { Id: 1, Name: '卡卡西', Email: 'kkx@163.com' }, 13 success: function (data) { 14 alert('get請求'); 15 } 16 }); 17 }); 18 19 $('#btn_post').click(function () { 20 $.ajax({ 21 url: '/api/WebApiDemo', 22 type: 'post', 23 data: { Id: 1, Name: '卡卡西', Email: 'kkx@163.com' }, 24 success: function (data) { 25 alert('post請求'); 26 } 27 }); 28 }); 29 30 $('#btn_put').click(function () { 31 $.ajax({ 32 url: '/api/WebApiDemo', 33 type: 'put', 34 contentType: 'application/json', 35 data: JSON.stringify({ Id: 1, Name: '卡卡西', Email: 'kkx@163.com' }), 36 success: function (data) { 37 alert('put請求'); 38 } 39 }); 40 }); 41 $('#btn_delete').click(function () { 42 $.ajax({ 43 url: '/api/WebApiDemo', 44 type: 'delete', 45 data: { Id: 1, Name: '卡卡西', Email: 'kkx@163.com' }, 46 success: function (data) { 47 alert('delete請求'); 48 } 49 }); 50 }) 51 52 }); 53 </script> 54 </head> 55 <body> 56 <div> 57 <input type="button" id="btn_get" value="Get查詢請求" /> 58 <input type="button" id="btn_post" value="Post提交數據" /> 59 <input type="button" id="btn_put" value="Put修改數據" /> 60 <input type="button" id="btn_delete" value="Delete刪除數據" /> 61 </div> 62 </body> 63 </html>?
Controller:
1 [HttpGet] 2 public string GetDemo([FromUri] Person person) 3 { 4 return "ok"; 5 } 6 [HttpPost] 7 public string PostDemo([FromBody] Person person) 8 { 9 return "ok"; 10 } 11 [HttpPut] 12 public bool PutDemo(dynamic obj) 13 { 14 return true; 15 } 16 17 [HttpDelete] 18 public bool DeleteDemo([FromBody] Person person) 19 { 20 return true; 21 }運行截圖:
Get傳參:
Post傳參:
Put傳參:
Delete傳參:
?
轉載于:https://www.cnblogs.com/sunice/p/6436009.html
總結
- 上一篇: bzoj 3343: 教主的魔法
- 下一篇: 请问买房子,没有工作怎么办贷款?