Tôi đang cố gắng sử dụng phiên bản beta WebAPI mới để xây dựng dịch vụ web mà tôi có thể truy vấn bằng cách sử dụng OData query string conventions và trả lại OData formatted Json. Tôi cũng muốn sử dụng OData 2.0 (thay vì 1.0).API Web của Asp.Net MVC4 - Trả về Json có định dạng OData từ truy vấn mà không cần MediaTypeFormatter tùy chỉnh
Mặc dù có vẻ như nó không hỗ trợ tùy chọn $select và các tiêu đề dường như có thể ghi đè tùy chọn $format, trả về một số IQueryable
chung dường như cung cấp hỗ trợ cho hầu hết các tùy chọn truy vấn khác mà tôi cần.
Điều tôi thực sự đấu tranh là cách tốt nhất để cung cấp các đối tượng Json đáp ứng đặc tả OData 2.0. WebAPI chỉ trả về dữ liệu Json bình thường khi được truy vấn. Ví dụ, nếu tôi thực hiện một yêu cầu GET của một cái gì đó như thế này ...
http://localhost:XXXXX/vendor/?$filter=RONUMBER eq '2597385'&$select=VENDORID,VENDORNAME&$top=1&$format=Json
..to có được hit đầu phù hợp với các quy định RONumber trên máy dev của tôi, tôi nhận được một phản ứng có chứa các Json sau ...
[{"MEPartNumber":"11-2222-3-4444","MFGPartNumber":"123456-123","MFGSerialNumber":"ABC123","RONumber":"987654321","VendorId":"1234567","VendorName":"ACME SERVICE CENTER"}]
Tôi cần Json đáp ứng thông số OData 2.0. Một cái gì đó giống như thế này ..
OData V2: {
"d" : {
"results": {
"__metadata": {
"uri": "http://someserver/foo/vendor(1)",
"type": "Vendor"
},
"MEPartNumber": "11-2222-3-4444",
"MFGPartNumber": "123456-123",
"MFGSerialNumber": "ABC123",
"RONumber":"987654321",
"VendorId":"1234567",
"VendorName": "ACME SERVICE CENTER"
}
}
}
Tôi cho rằng tôi có thể viết tùy chỉnh MediaTypeFormatter
để lấy cấu trúc mà tôi muốn. Tôi cũng có thể sửa đổi các đối tượng được trả về của tôi để bắt chước cấu trúc của Json mong muốn. Ngoài hai tùy chọn này, có ai biết cách thông minh để làm cho WebAPI cung cấp cho tôi các đối tượng Json định dạng OData 2.0 không?
OK. Cảm ơn thông tin, marcind. – racingcow