Cho webapiconfig sau;Trả về xml hoặc json từ api MVC web dựa trên yêu cầu
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
và bộ điều khiển này;
public class ProductsController : ApiController
{
Product[] _products = new Product[]
{
new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 },
new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M },
new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M }
};
public IEnumerable<Product> GetAllProducts()
{
return _products;
}
}
Sử dụng URL http://localhost/api/Products
Tôi nhận được danh sách các sản phẩm ở định dạng XML.
Điều tôi muốn làm là có tùy chọn trả về json hoặc xml dựa trên yêu cầu. Vì vậy, đối với json, nó sẽ là;
http://localhost/api/Products.json
và cho XML, nó sẽ là;
http://localhost/api/Products.xml
tương tự;
http://localhost/api/Products.json/1/
http://localhost/api/Products.xml/1/
Điều này có thể và làm cách nào để đạt được chức năng này?
Một giải pháp thay thế sẽ giống như;
http://localhost/api/json/Products/
Các tuyến đường dường như để làm việc, nhưng các công cụ mở rộng không làm gì cả. Tôi đã thêm chúng vào global.asax, đây có phải là vấn đề không? – ChrisBint
Chris, sử dụng {ext} thay vì {extension}, vì {ext} dường như được mã hóa cứng để tham chiếu đến trình định dạng được ánh xạ. – MCattle
Chủ đề tuyệt vời. Giống như @MCattle nói, Luôn nhớ: EXT thay vì EXTENSION –