我创建了(在这里有一些帮助)我的RESTful API服务。我工作得很好,但返回的数据是XML格式,我希望它是在JSON中。这是一组数据。检索数据的方法是:
public IEnumerable<Photo> GetAllPhotos()
{
return photos;
}
或
public IHttpActionResult GetPhotoById(int PhotoId)
{
var photos= Array.FindAll(photos, x => x.PhotoId== PhotoId);
if (photos== null)
{
return NotFound();
}
return Ok(photos);
}
但有一个要求是将数据作为JSON返回。
答案 0 :(得分:3)
这种情况正在发生,因为您的浏览器会在其text/xml
标头中发送Accept
,并且Web API支持内容协商。
要删除XML格式化程序,请将其添加到应用程序的启动代码中:
var configuration = GlobalConfiguration.Configuration;
configuration.Formatters.Remove(configuration.Formatters.XmlFormatter);
答案 1 :(得分:0)
当然,Web浏览器希望以他们能够最好地理解和使用的格式接收数据。通常,这意味着text/html
如果您不想使用它们,可以从格式化程序列表中删除JSON格式化程序或XML格式化程序。这样做的主要原因是:
将您的网址API响应限制为特定媒体类型。例如,您可能决定仅支持JSON响应,并删除XML格式化程序。
以下代码显示了如何删除默认格式化程序。从您在 Global.asax 。
中定义的Application_Start方法中调用此方法void ConfigureApi(HttpConfiguration config)
{
// Remove the JSON formatter
config.Formatters.Remove(config.Formatters.JsonFormatter);
// or
// Remove the XML formatter
config.Formatters.Remove(config.Formatters.XmlFormatter);
}
老实说,当你真正提炼它时,最好的答案是不要使用浏览器来测试你的API。为什么?因为这不是浏览器最擅长的,并且有大量工具可以让您更轻松地测试API。他们都是自由的。你应该使用它们,因为在浏览器中测试API(在插件或检查器之外)是一个愚蠢的游戏。
来源http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization