Postman訪問Webapi的Get/Post/Put/Delte請求
問題場景:
ASP.NET MVC WebApi 定義Get/Post/Put/Delete方法。使用Postman工具呼叫相應的方法。根據方法的特性不同、引數的特性不同,所訪問的方式也不同。
問題分析:
建立一個新的WebApi的專案。控制器自動生成的程式碼如下:
首先看到類的上面有個特性預設如下:
[Route("api/[controller]")]
建議將路由規則修改為
[Route("api/[controller]/[action]")]
這樣的話我們就能輸入方法名精確到我們需要訪問的方法。下面開始介紹Get/Post/Put/Delete請求。
1.頁面訪問Get請求方法:
以下為使用Postman時請求GET的簡單說明:
a) 特性為HttpGet
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
Postman使用GET請求,Url地址即可(eg:http://localhost:port/api/values/Get),如果該方法有引數,則在Params輸入對應的引數名和引數值即可(即url地址中尾部增加'?key1=val1&key2=val2')。得到的返回值是["value1","value2"]
b) 特性為HttpGet("{name}")
[HttpGet("{id}")]
public int Get(int id)
{
return id;
}
[HttpGet("{id}")]這個特性是自動生成的,具體的話沒有深入的研究。請求的引數方式會有些不同。他所攜帶的引數請求規則為:
2.頁面訪問POST請求方法:
a) 引數為基本資料型別
[HttpPost]
public string Post(string str)
{return str;
}
Headers框下方的"Content-Type" 所對應的值應為 "application/x-www-form-urlencoded"
然後在"Body"框下輸入對應的引數名和引數值,點選"Send"按鈕即可請求並且得到返回值。
b) 引數特性被標記為[FromBody]
[HttpPost]
public string Post([FromBody]string value)
{return value;
}
假若傳遞的引數型別的特性為[FromBody]時,需要注意:作為被標記為[FromBody]的引數只能出現一次,並且 [FromBody] 引數不能是基本的資料型別(如byte、int、bool、DateTime、string等)。
所以以上的方法是不能被訪問到的。
c) [FromBody]標記的引數為物件
public class ReqTest
{
public int id { get; set; }
public string name { get; set; }
}[HttpPost]
public string Post([FromBody]ReqTest req)
{
return req.id.ToString() + req.name;
}
[FromBody]標記引數需要使用json的格式進行傳遞。
Headers框下方的"Content-Type" 所對應的值應為 "application/json"
然後在"Body"框下選擇"raw",輸入json格式的引數進行訪問(eg:{"id":9527,"name":"Mark"})。
得到的返回值為"9527Mark"
3.HTTP PUT/Delete請求方式:
PUT請求和Delete請求實際用到的情況不是很多。使用方式跟POST差不多,只需要注意將Postman的請求方式改成對應的PUT或者Delete方式即可。
感謝觀看,如有錯誤或不合適的地方煩請各位高手指點迷津。謝謝~