• 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

  • 相关阅读:
    洛谷 P2515 [HAOI2010]软件安装
    洛谷 P3818 小A和uim之大逃离 II
    洛谷 P3155 [CQOI2009]叶子的染色
    洛谷 P1414 又是毕业季II
    NOI 2014 起床困难综合征
    NOI 2001 反正切函数的应用
    CF1311E Construct the Binary Tree
    小技巧—卡格式
    CF817F MEX Queries
    洛谷 U138573 序章&第一章 黑暗时代(eviltime)
  • 原文地址:https://www.cnblogs.com/lzhp/p/5198486.html
Copyright © 2020-2023  润新知