【问题标题】:How can I choose my ajax response content type dynamically?如何动态选择我的 ajax 响应内容类型?
【发布时间】:2017-11-11 04:46:35
【问题描述】:

由于某些原因,我需要根据客户请求选择我的回复content-type。我想知道如何实现可以管理它的动态请求。我需要这样的东西:

e.g. /api/xml/values or /api/json/values

甚至:

e.g. /api/values?type=xml or /api/values?type=json

可以将ASP.net Web API 配置为动态处理内容类型。

【问题讨论】:

    标签: javascript ajax asp.net-mvc asp.net-web-api


    【解决方案1】:

    在ASP.NET Web API 中,媒体类型格式化程序是一个可以:

    • 从 HTTP 消息体中读取 CLR 对象
    • 将 CLR 对象写入 HTTP 消息正文

    Web API 为JSON 和XML 提供媒体类型格式化程序。这 默认情况下,框架将这些格式化程序插入到管道中。 客户端可以在 Accept 标头中请求 JSON 或 XML HTTP 请求。

    因此,您无需更改或设置任何配置即可实现这一目标。如果要确定响应内容类型,则需要向服务器发送正确的标头。

    例如本节提供JSON:

    $.ajax({
            headers: {          
                Accept: "text/json; charset=utf-8",         
                "Content-Type": "text/json; charset=utf-8"
            },
            url: '/api/Values',
            method: 'get'
        }).then(console.log);
    

    例如本节提供XML:

    $.ajax({
            headers: {          
                Accept: "text/xml; charset=utf-8",         
                "Content-Type": "text/xml; charset=utf-8"
            },
            url: '/api/Values',
            method: 'get'
        }).then(console.log);
    

    结果

    对于第一个代码(JSON 内容类型):

    ["value1","value2"]
    

    对于第二个(XML 内容类型):

    <ArrayOfstring xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays"><string>value1</string><string>value2</string></ArrayOfstring>
    

    【讨论】:

      猜你喜欢
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 2016-06-27
      • 1970-01-01
      • 2011-03-07
      • 1970-01-01
      相关资源
      最近更新 更多