2013-08-16 31 views
17

Tôi đọc theo mặc định, API Web sẽ trả về dữ liệu JSON nhưng vì một số lý do khi tạo API, API trả về XML thay vì JSON.ASP.NET web api trả về XML thay vì JSON

public class CurrencyController : ApiController 
{ 
    private CompanyDatabaseContext db = new CompanyDatabaseContext(); 

    // GET api/Currency 
    public IEnumerable<Currency> GetCurrencies() 
    { 
     return db.Currencies.AsEnumerable(); 
    } 
} 

tôi đã không sửa đổi bất cứ điều gì khác thường vì vậy tôi stumped

+0

Nevermind, tôi phát hiện ra nó đã thực sự trả lại JSON, vì một lý do nào đó Chrome định dạng nó thành XML >> – ChaoticLoki

+0

Sao chép có thể có: [link] (http://stackoverflow.com/questions/9847564/how-do-i -get-asp-net-web-api-to-return-json-thay-cho-xml-sử dụng-chrome) –

Trả lời

42

nếu bạn sửa đổi của bạn WebApiConfig như sau bạn sẽ nhận được JSON theo mặc định.

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); 
    } 
} 
10

Web Api tìm tiêu đề của yêu cầu sắp tới để chọn kiểu dữ liệu trả về. Ví dụ: nếu bạn đặt Chấp nhận: application/json, nó sẽ tự động đặt kiểu trả về thành JSON.

Bên cạnh đó, việc đặt loại nội dung cung cấp một đầu mối cho Web-API về loại dữ liệu yêu cầu sắp tới. Vì vậy, nếu bạn muốn đăng dữ liệu JSON lên API Web, bạn phải có tiêu đề Loại nội dung: application/json trong tiêu đề.

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