2013-11-25 21 views
16

Tôi có một dự án API Web trả về một số dữ liệu sản phẩm. Nó thương lượng kiểu trả về một cách chính xác tùy thuộc vào tiêu đề Chấp nhận (JSON/XML) của yêu cầu. Vấn đề là, nếu không có tiêu đề Accept nào được chỉ định, nó trả về JSON, nhưng tôi muốn nó trả về XML theo mặc định. Làm cách nào để thay đổi các thỏa thuận nội dung mặc định trong Global.asax?Làm thế nào để thay đổi mặc định ASP.NET MVC Web API phương tiện truyền thông định dạng?

Trả lời

29

Tìm thấy một giải pháp thông qua http://www.strathweb.com/2013/06/supporting-only-json-in-asp-net-web-api-the-right-way/

gia tăng này trong WebApiConfig.Register():

config.Formatters.Clear(); 
config.Formatters.Add(new XmlMediaTypeFormatter()); 
config.Formatters.Add(new JsonMediaTypeFormatter()); 
config.Formatters.Add(new FormUrlEncodedMediaTypeFormatter()); 

Vì vậy, mặc định là XML, các định dạng đầu tiên, nhưng API vẫn hỗ trợ JSON nếu yêu cầu yêu cầu nó.

+1

Cũng thêm 'FormUrlEncodedMediaTypeFormatter' vào mã trên của bạn như theo mặc định Web API có định dạng đó quá trong bộ sưu tập –

+0

điều này ** FormUrlEncodedMediaTypeFormatter ** nào ?? Tôi thấy điều đó không trả lại gì cả! –

+0

@Chỉ cần trả về các giá trị được định dạng URL (http://msdn.microsoft.com/en-us/library/system.net.http.formatting.formurlencodedmediatypeformatter(v=vs.118).aspx) như 'myVariable = 1 & myOtherVariable = test' – Edgar

Các vấn đề liên quan