为了账号安全,请及时绑定邮箱和手机立即绑定

如何让ASP.NETWebAPI使用Chrome返回JSON而不是XML?

如何让ASP.NETWebAPI使用Chrome返回JSON而不是XML?

肥皂起泡泡 2019-06-15 17:12:22
如何让ASP.NETWebAPI使用Chrome返回JSON而不是XML?使用更新的ASP.NETWebAPI,在铬我看到xml-我如何将它更改为请求?杰森这样我就可以在浏览器里查看了?我相信这只是请求头的一部分,我是对的吗?
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

我只是在App_Start / WebApiConfig.cs类在我的MVC WebAPI项目中。

config.Formatters.JsonFormatter.SupportedMediaTypes
    .Add(new MediaTypeHeaderValue("text/html") );

这可以确保在大多数查询中得到json,但您可以xml当你发送text/xml.

如果你需要得到回应Content-Typeapplication/json请查查托德的回答如下.

NameSpace正在使用System.Net.Http.Headers;


查看完整回答
反对 回复 2019-06-15
?
Helenr

TA贡献1780条经验 获得超4个赞

如果你在WebApiConfig默认情况下,您将获得JSON,但如果您通过text/xml作为请求Accept标头

public static class WebApiConfig{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
        config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
    }}

如果您没有使用MVC项目类型,因此在开始时没有这个类,见这个答案有关如何合并它的详细信息。


查看完整回答
反对 回复 2019-06-15
?
喵喔喔

TA贡献1735条经验 获得超5个赞

我喜欢费利佩·利辛方法最好-确保浏览器获得JSON,而不影响来自实际需要XML的客户端的内容协商。对我来说,唯一缺少的部分是响应头仍然包含内容类型:text/html。为什么这是个问题?因为我用JSON格式化程序Chrome扩展,它检查内容类型,而且我不知道我习惯的格式。我用一个简单的自定义格式化程序修复了这个问题,它接受文本/html请求并返回application/json响应:

public class BrowserJsonFormatter : JsonMediaTypeFormatter{
    public BrowserJsonFormatter() {
        this.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
        this.SerializerSettings.Formatting = Formatting.Indented;
    }

    public override void SetDefaultContentHeaders(Type type, HttpContentHeaders headers, MediaTypeHeaderValue mediaType) {
        base.SetDefaultContentHeaders(type, headers, mediaType);
        headers.ContentType = new MediaTypeHeaderValue("application/json");
    }}

登记如下:

config.Formatters.Add(new BrowserJsonFormatter());


查看完整回答
反对 回复 2019-06-15
  • 3 回答
  • 0 关注
  • 1421 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信