void | 返回204狀態碼 |
HttpResponseMessage | Convert directly to an HTTP response message. |
IHttpActionResult | Call ExecuteAsync to create an HttpResponseMessage, then convert to an HTTP response message. |
Other type | Write the serialized return value into the response body; return 200 (OK). |
1. void 返回204狀態碼
public void Get() { }
2.直接轉化成http響應消息
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) };
//HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, new { a=1,b=2});
//return response; return response;
3.IHttpActionResult 調用 ExecuteAsync 創建HttpResponseMessage,最后實現 public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)方法
常用類https://msdn.microsoft.com/en-us/library/system.web.http.results(v=vs.118).aspx,也可以自定義實現IHttpActionResult接口。
public IHttpActionResult Get() { return NotFound();//Ok() //return new TextResult("hello", Request); } } public class TextResult : IHttpActionResult { string _value; HttpRequestMessage _request; public TextResult(string value, HttpRequestMessage request) { _value = value; _request = request; } public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken) { var response = new HttpResponseMessage() { Content = new StringContent(_value), RequestMessage = _request }; return Task.FromResult(response); } }
4.使用其他類型
public Product Get() { return new Product { Id = 1, Name = "我的商品" }; } } public class Product { public int Id { get; set; } public string Name { get; set; } }
如果上述出現異常,無法返回404錯誤碼,可以使用過濾器標簽處理。
本文參考:http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/action-results