2015-02-06 79 views
1

Asp.net的默認返回類型是XML。但我可以在配置設置中改變它。asp.net web api用戶選擇的內容類型

public static void Register(HttpConfiguration config) 
{ 
    config.Formatters.Clear(); 
    // config.Formatters.Add(new XmlMediaTypeFormatter()); 
    config.Formatters.Add(new JsonMediaTypeFormatter()); 
} 

我的控制器:

public class ProductController: ApiController 
{ 
    public IEnumerable<Product> Get() 
    { 
     return new List<Product> { 
      new Product {Name = "p1", Price = 10}, 
      new Product {Name = "p2", Price = 20} 
     }; 
    } 
} 

現在我想這樣的:

  • 用戶應該用參數指定返回類型。
  • http://domain/product/get(格式XML或JSON)

我不想改變我的控制器操作。

有沒有辦法用Route參數或任何其他級別來做到這一點?

回答

1

默認情況下,如果沒有指定格式化程序,web api將返回xml或json。

如果需要返回JSON你只需指定從客戶端下面的標題:

Accept: application/json 

json fiddler request and response

的Javascript

var urlString = "http://localhost/api/values/Get"; 

    $.ajax({ 
     url: urlString, 
     type: 'GET', 
     data: {id : 1}, 
     dataType: 'json', 
     contentType: 'application/json', 
     success: function (data) { console.log(data); } 
    }); 

或XML:

Accept: application/xml 

xml fiddler response request

的Javascript

var urlString = "http://localhost/api/values/Get"; 

$.ajax({ 
    url: urlString, 
    type: 'GET', 
    data: {id : 1}, 
    dataType: 'xml', 
    contentType: 'application/xml', 
    success: function (data) { console.log(data); } 
});