• .net Api项目初步搭建并移除XML格式


    个人理解:API接口模式与普通MVC模式的区别在于:API中Controller中是返回数据,而MVC中Controller返回的是视图。


    1.使用Vs初步搭建web api项目
    这里写图片描述
    搭建一个新项目,我使用的vs2013版本,使用mvc4 web应用程序。

    2.完成搭建
    这里写图片描述
    这里选择Web API模块,然后确定便成功搭建。

    3.大致了解项目
    这里写图片描述
    这里写图片描述
    右侧为解决方案,App_Atart文间中包含项目启动文件,在普通web项目中只有有一个RouteConfig文件包含项目启动路由,而在API项目中还包含WebApiConfig文件含有外部调用的路由设置。剩下的Models-View-Controller就是MVC了

    4.不做任何改动添加直接启动项目
    这里写图片描述
    一个经典的欢迎页面,到这里已经算是Web Api项目搭建完成了

    5.使用API接口调用得到”Hello Api”
    文章开始就说了Api接口调用返回的是数据,所以不用考虑在Api项目中建立View视图,直接建立Controller返回”Hello Api”即可

    namespace ApiTest.Controllers
    {
        public class GreetingController : ApiController
        {
            public string GetGreeting() {
                return "Hello API";
            }
        }
    }

    6.再次启动项目,使用WebApiConfig中的路由规则去访问
    WebApiConfig中的路由规则:

    config.Routes.MapHttpRoute(
                    name: "DefaultApi",
                    routeTemplate: "api/{controller}/{id}",
                    defaults: new { id = RouteParameter.Optional }
                );

    项目启动后(goole浏览器),使用http://localhost:1361/api/Greeting url方式调用Api
    这里写图片描述
    这里便得到了”Hello API”,但是这里数据是XML格式,我们使用数据都是json格式。
    (我尝试了去用IE浏览器调用返回的便是json格式的数据,很变态啊)

    7.解决XML格式
    产生XMl格式是因为浏览器发送请求时的请求头为xml格式,大多数浏览器的请求头都是:

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

    Web API检测上述信息是从左到右并且同时尝试通过从格式化注册的列表中去找到一个匹配它的并且支持的介质类型(meta type)。在此种情况下,application/xml与Xml Formatter匹配上了,所以会以XML格式进行输出并返回。
    解决方案:
    在浏览器去请求去匹配api路由时,将XML格式的请求头移除即可。
    在WebApiConfig 中的 Register 方法中加入

    var formatters = config.Formatters.Where(formatter =>
           formatter.SupportedMediaTypes.Where(media =>
           media.MediaType.ToString() == "application/xml" || media.MediaType.ToString() == "text/html").Count() > 0) //找到请求头信息中的介质类型
           .ToList();
    
     foreach (var match in formatters)
     {
         config.Formatters.Remove(match);  //移除请求头信息中的XML格式
     }

    再次访问:
    这里写图片描述

  • 相关阅读:
    java多线程设计模式
    Java横向、纵向合并图片
    Oracle数据库当前连接数、最大连接数的查询与设置
    oracle获取一段时间内所有的小时、天、月
    Struts2+Spring3+Mybatis3开发环境搭建
    Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源方法
    spring+mybatis 多数据源切换
    Java与WCF交互(一):Java客户端调用WCF服务
    使用axis2进行WebService的开发
    axis2 WebService的发布与调用
  • 原文地址:https://www.cnblogs.com/wangqilong/p/10088373.html
Copyright © 2020-2023  润新知