今天就來跟大家說一下 Web API 有哪寫返回值類型吧
剛開始我只知道兩種(我還以為就這兩種
後來我才知道它還有另外兩種返回值類型
而且經過爬文才知道
最推薦的是後來發現的
我真的是孤陋寡聞阿(沒關係,反正我是菜鳥別人會體諒
一 void
這個想畢大家都很熟悉吧
就是沒有回傳值的方法
就是呼叫後,不需要return
sever端會幫你回傳標準的204(No Content)的Http回應
給Client端(這段我上網找了頗久,之前我還以為是直接斷開
範例:
public void Delete(int id)
{
}
呼叫結果如圖
二 一般對象(string,int...)
這就是大家最常用
同時也最熟悉的寫法吧
你寫什麼回傳型態
就要回傳甚麼型態的資料
我之前大都用這種寫法~~
範例:
public string Get()
{
return "value";
}
這裡理所當然會回傳一組字串
"value"
呼叫結果如圖
接下來就是重點了
前面畢竟還有接觸過
接下來就....
三 HttpResponseMessage
這東西很妙
因為它可以自定義sever端回傳的狀態
也就是說可以不用系統自動產生的
而是由我們決定
當然還是可以用系統產生的啦
而回傳的東西也很有趣
範例(我這邊用的是微軟的範例
public class ValuesController : ApiController
{
public HttpResponseMessage Get()
{
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, "value");
response.Content = new StringContent("hello", Encoding.Unicode);
response.Headers.CacheControl = new CacheControlHeaderValue()
{
MaxAge = TimeSpan.FromMinutes(20)
};
return response;
}
}
回應:
HTTP/1.1 200 OK
Cache-Control: max-age=1200
Content-Length: 10
Content-Type: text/plain; charset=utf-16
Server: Microsoft-IIS/8.0
Date: Mon, 27 Jan 2014 08:53:35 GMT
hello
它回傳的狀態是 HttpStatusCode.OK
回傳的文字 hello
文字格式 Encoding.Unicode
這寫法的優點
是可以控制的回應訊息很多
四 IHttpActionResult
這很重要!!!
這很重要!!!
這很重要!!!
因為很重要所以打三次~~
就我看上網爬文
大多的推薦回傳型態都是用這個寫
IHttpActionResult Web API 2 中引進了介面。 基本上,它會定義HttpResponseMessage factory。
至於甚麼是 factory 相信大家都知道(除了我,我還研究了一陣子
IHttpActionResult包含單一方法ExecuteAsync,以非同步方式建立HttpResponseMessage執行個體。
public interface IHttpActionResult
{
Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken);
}
我就用我的程式碼簡單舉例一下好了
public IHttpActionResult delete(int id)
{
return Ok(id);
}
Ok的部分就是 HttpResponseMessage 回傳狀態(又分BadRequest,Conflict,Ok,NotFound....等
id就是我上面傳進來的 int(但是也可以回傳諸多類型,例如我們最常用的類別,當然最普通的string也是可以啦
哈哈
好啦~今天就先到這裡
整理這些東西對我這個菜鳥來說真的不容易
有甚麼觀念錯誤的地方請諸位大大好心提出喔
以下在附上微軟解釋以上四種東西的圖表
那我們明天見囉~~