我创建了我的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的形式返回数据。
发布于 2016-04-17 18:48:12
自然,web浏览器希望以一种他们能够最好地理解和使用的格式接收数据。一般来说,这意味着text/html
如果不想使用JSON格式化程序或XML格式化程序,可以从格式化程序列表中删除它们。这样做的主要原因是:
若要将web API响应限制为特定媒体类型,请执行以下操作。例如,您可能决定只支持JSON响应,并删除XML格式化程序。
下面的代码演示如何删除默认格式化程序。从您的Application_Start方法(在Global.asax中定义)调用它。
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
发布于 2016-04-17 14:07:29
这是因为您的浏览器在其text/xml
头中发送Accept
,而Web支持内容协商。
若要删除XML格式化程序,请将其添加到应用程序的启动代码中:
var configuration = GlobalConfiguration.Configuration;
configuration.Formatters.Remove(configuration.Formatters.XmlFormatter);
https://stackoverflow.com/questions/36682721
复制