zoukankan      html  css  js  c++  java
  • 配置WepApi默认支持JSON数据格式的返回 人工智能

        我们在使用MVC 的WepApi时,比如我们有如下方法:

            // GET api/Task/5
            public Task GetTask(int id)
            {
                Task task = db.Task.Find(id);
                if (task == null)
                {
                    throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
                }
    
                return task;
            }

        看,此方法返回的是Task实体类型.然后我们在浏览器里直接调用它.如:

        http://localhost:8888/api/Task/GetTask/1

        它返回的数据,在IE和Chrome是不一样的,IE默认直接返回JSON, 而Chrome返回的是XML.

        这是什么道理呢?正常情况下,既然使用了WepApi,我们多数情况要求返回JSON, 这在IE里是正确的,而用Chrome的话就会出错.不是我们想要的.

    原因是非IE在请求是带有application/xml而IE不带.

        作为WebApi提供者,同一调用,在不同浏览器返回结果不一致,这是不是应该是框架提供者应该考虑的事情呢?这种把WebApi和IE绑定的小花招挺搞笑的.

    那么怎么解决这个问题呢?

        我们直接把XML的解析移除,不要它了.

        在WebApiConfig.cs里增加如下代码:

                var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
                config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);

        大功告成,各大浏览器对WepApi支持一致了,都返回Json

  • 相关阅读:
    从实验室走向世界:HSP90抑制剂,一种新的癌症药物
    RabbitMQ整合Spring Booot【消费者应答模式】
    RabbitMQ整合Spring Booot【点对点模式】
    Mac删除自带的abc输入法
    Docker搭建Kafka
    IK分词器
    Docker搭建ES集群
    Logstash配置同步mysql到es配置
    ELK分布式日志收集搭建和使用
    Docker安装ES和Kibana
  • 原文地址:https://www.cnblogs.com/DSharp/p/3071099.html
Copyright © 2011-2022 走看看