使用更新的ASP。NET Web API,在Chrome中我看到XML -我如何将其更改为请求JSON,以便我可以在浏览器中查看它?我相信这只是请求头的一部分,我是正确的吗?
当前回答
注意:阅读这个答案的注释,如果你使用WebAPI的默认错误处理,它可能会产生一个XSS漏洞
我只是在我的MVC Web API项目的App_Start / WebApiConfig.cs类中添加了以下内容。
config.Formatters.JsonFormatter.SupportedMediaTypes
.Add(new MediaTypeHeaderValue("text/html") );
这确保您在大多数查询中得到JSON,但当您发送text/ XML时可以得到XML。
如果你需要将响应Content-Type设置为application/json,请检查Todd下面的回答。
命名空间正在使用System.Net.Http.Headers。
其他回答
我很惊讶地看到这么多的回复需要编码来更改一个API中的单个用例(GET),而不是使用一个必须安装一次并且可以用于任何API(自己或第三方)和所有用例的适当工具。
所以好的答案是:
如果你只想请求json或其他内容类型,请安装Requestly或类似的工具,并修改Accept报头。 如果你也想使用POST,并有很好的格式的json, xml等,使用适当的API测试扩展,如Postman或ARC。
看看WebAPI中的内容协商。这些(第1部分和第2部分)非常详细和彻底的博客文章解释了它是如何工作的。
简而言之,您是对的,只需要设置Accept或Content-Type请求头。如果你的Action没有返回特定的格式,你可以设置Accept: application/json。
WebApiConfig是你可以配置你想要输出json还是xml的地方。缺省情况下为xml格式。在register函数中,我们可以使用HttpConfiguration Formatters来格式化输出。
System.Net.Http.Headers => MediaTypeHeaderValue("text/html")需要获得json格式的输出。
从MSDN构建一个单页应用程序与ASP。NET和AngularJS(大约41分钟)。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// ... possible routing etc.
// Setup to return json and camelcase it!
var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
formatter.SerializerSettings.ContractResolver =
new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
}
它应该是当前的,我试过了,它工作。
我不清楚为什么答案会这么复杂。当然,有很多方法可以做到这一点,QueryStrings,头和选项…但我认为最好的做法很简单。你请求一个简单的URL(例如:http://yourstartup.com/api/cars),作为回报,你得到JSON。你得到JSON和适当的响应头:
Content-Type: application/json
在寻找这个问题的答案时,我发现了这个帖子,并不得不继续下去,因为这个公认的答案并不完全正确。我确实找到了一个答案,我觉得它太简单了,不是最好的答案:
设置默认的WebAPI格式化程序
我把我的小费也加在这里。
WebApiConfig.cs
namespace com.yourstartup
{
using ...;
using System.Net.Http.Formatting;
...
config.Formatters.Clear(); //because there are defaults of XML..
config.Formatters.Add(new JsonMediaTypeFormatter());
}
我确实有一个问题,默认(至少我看到的那些)来自哪里。它们是. net默认的,还是在其他地方创建的(由我项目中的其他人创建)。无论如何,希望这能有所帮助。
推荐文章
- net HttpClient。如何POST字符串值?
- 如何合并2 JSON对象从2个文件使用jq?
- 如何禁用谷歌翻译从HTML在Chrome
- 在VS Code中禁用“Comments are not allowed In JSON”错误
- 如何在Kotlin解析JSON ?
- JSON文件的蒙古导入
- Chrome开发工具:如何找出什么是覆盖CSS规则?
- 如何用jQuery / JavaScript解析JSON数据?
- jQuery在请求体中发布有效的json
- 将JSON显示为HTML
- 在JSON键名中哪些字符是有效的/无效的?
- 如何JSON序列化集?
- 如何检查JSON键是否存在?
- 返回内容与IHttpActionResult非ok响应
- 资源解释为样式表,但以MIME类型text/html传输(似乎与web服务器无关)