asp.net web api只返回json数据格式

asp.net web api只返回json数据格式

760发表于2019-04-14

asp.net web api默认是同时支持返回xml和json数据格式的。这种机制是因为有web api框架中的SupportedMediaTypes的存在。

具体返回什么样的数据格式,你可以在请求接口的时候指定content-type,如果没有指定,会以默认的格式返回。

比如在浏览器上输入get接口时,会返回类似如下格式信息:

from clipboard

那为什么会出现这样的情况呢?我们打开f12看看请求头。

from clipboard

看到了吗?默认加上了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格式
}

如下图:


from clipboard


再次请求接口:

from clipboard

在响应头中也标示为application/json了。

小编蓝狐