web api默认是同时支持返回xml和json数据格式的。这种机制是因为有web api框架中的SupportedMediaTypes的存在。
具体返回什么样的数据格式,你可以在请求接口的时候指定content-type,如果没有指定,会以默认的格式返回。
比如在浏览器上输入get接口时,会返回类似如下格式信息:
那为什么会出现这样的情况呢?我们打开f12看看请求头。
看到了吗?默认加上了application/xml,所以会返回xml格式。
如果我想去掉xml格式,只保留json。那该怎么办呢?
在WebApiConfig中的Register方法移除application/xml的MediaType。
加下如下代码:
var formatters = config.Formatters.Where(formatter =>
formatter.SupportedMediaTypes.Where(media => media.MediaType.ToString() == "application/xml").Count() > 0) //找到请求头信息中的介质类型
.ToList();
foreach (var match in formatters)
{
config.Formatters.Remove(match); //移除请求头信息中的XML格式
}
如下图:
再次请求接口:
在响应头中也标示为application/json了。