轉 Postman訪問Webapi的Get/Post/Put/Delte請求


Postman訪問Webapi的Get/Post/Put/Delte請求

問題場景:

ASP.NET MVC WebApi 定義Get/Post/Put/Delete方法。使用Postman工具調用相應的方法。根據方法的特性不同、參數的特性不同,所訪問的方式也不同。

問題分析:

創建一個新的WebApi的項目。控制器自動生成的代碼如下:

首先看到類的上面有個特性默認如下:

[Route("api/[controller]")]

這個是訪問時的路由規則(eg:http://localhost:port/api/conroller)。訪問地址時不需要輸入方法名,路由規則會根據參數的情況自動匹配。

建議將路由規則修改為

[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}")]這個特性是自動生成的,具體的話沒有深入的研究。請求的參數方式會有些不同。他所攜帶的參數請求規則為:

http://localhost:54261/api/values/Get/idvalue 。

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方式即可。


免責聲明!

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



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