博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net Api项目初步搭建并移除XML格式
阅读量:5309 次
发布时间:2019-06-14

本文共 1703 字,大约阅读时间需要 5 分钟。

个人理解: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浏览器),使用 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格式 }

再次访问:

这里写图片描述

转载于:https://www.cnblogs.com/wangqilong/p/10088373.html

你可能感兴趣的文章
windows基本命令
查看>>
VMware中CentOS设置静态IP
查看>>
[poj1006]Biorhythms
查看>>
jsp
查看>>
Hyper-V虚拟机上安装一个图形界面的Linux系统
查看>>
Hover功能
查看>>
js千分位处理
查看>>
Mac---------三指拖移
查看>>
关于VMare中安装Ubuntu的一些说明
查看>>
字符串类型的相互转换
查看>>
HTTP状态码
查看>>
iOS如何过滤掉文本中特殊字符
查看>>
python - wmi模块学习(windwos硬件信息获取)
查看>>
Maven------使用maven新建web项目出现问题 项目名称出现红色交叉
查看>>
基础学习:C#中float的取值范围和精度
查看>>
Akka-Cluster(3)- ClusterClient, 集群客户端
查看>>
MongoDB-CRUD
查看>>
javaagent 简介
查看>>
python升级安装后的yum的修复
查看>>
Vim配置Node.js开发工具
查看>>