如何动态选择我的ajax响应内容类型?

时间:2017-06-09 08:41:00

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

出于某些原因,我需要通过客户端请求选择我的回复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配置为动态处理内容类型。

1 个答案:

答案 0 :(得分:1)

angular.module('app') .directive('isEmail', function() { return { restrict: 'A', require: 'ngModel', link: function(scope, element, attributes, ctrl) { ctrl.$validators.isEmail = function(modelValue, viewValue) { if (viewValue) { var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(viewValue); } } } } }) 中,媒体类型格式化程序是一个可以:

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

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

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

e.g。本节提供XML

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

结果

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

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

和第二个(XML内容类型):

["value1","value2"]