WebAPI Action的幾種返回值類型


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


免責聲明!

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



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