1. 程式人生 > >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]")]

建議將路由規則修改為

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

感謝觀看,如有錯誤或不合適的地方煩請各位高手指點迷津。謝謝~