2012-02-22 12 views
9

मैं नए WebAPI बीटा उपयोग करने के लिए एक वेब सेवा है कि मैं OData query string conventions का उपयोग कर क्वेरी और इसे वापस OData formatted Json हो सकता है का निर्माण करने की कोशिश कर रहा हूँ बिना क्वेरी से Json स्वरूपित। मैं ओडाटा 2.0 (1.0 के बजाए) का उपयोग करना चाहता हूं।Asp.Net MVC4 वेब एपीआई - वापसी OData कस्टम MediaTypeFormatter

यह नहीं दिखता है जबकि जैसे कि यह $select विकल्प के लिए समर्थन हासिल है और हेडर $format विकल्प ओवरराइड करने के लिए, लौटने एक IQueryable सामान्य अधिकांश अन्य क्वेरी विकल्प है कि मैं जरूरत के लिए सहायता प्रदान करने लगता है सक्षम होने के लिए लग रहे हैं।

मैं वास्तव में किसके साथ संघर्ष कर रहा हूं यह है कि ओडीटा 2.0 विनिर्देश को पूरा करने वाले जेसन ऑब्जेक्ट्स को सर्वोत्तम तरीके से कैसे प्रदान किया जाए। पूछे जाने पर वेबएपीआई सामान्य जेसन डेटा लौटाता है। उदाहरण के लिए, अगर मैं कुछ इस तरह की एक GET अनुरोध ... प्रदर्शन

http://localhost:XXXXX/vendor/?$filter=RONUMBER eq '2597385'&$select=VENDORID,VENDORNAME&$top=1&$format=Json 

..to मेरे देव मशीन पर निर्दिष्ट RONumber मिलान शीर्ष हिट मिलता है, मैं निम्नलिखित Json युक्त एक प्रतिक्रिया मिल ...

[{"MEPartNumber":"11-2222-3-4444","MFGPartNumber":"123456-123","MFGSerialNumber":"ABC123","RONumber":"987654321","VendorId":"1234567","VendorName":"ACME SERVICE CENTER"}] 

मुझे जेसन की आवश्यकता है जो ओडाटा 2.0 स्पेक से मिलता है। कुछ इस तरह के और अधिक ..

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" 
    } 
    } 
} 

मैं मैं संरचना है कि मैं चाहता हूँ के लिए कस्टम MediaTypeFormatter लिख सकता है लगता है। मैं वांछित जेसन की संरचना की नकल करने के लिए मेरी लौटाई गई वस्तुओं को भी संशोधित करने में सक्षम हो सकता हूं। इन दो विकल्पों के अलावा, क्या किसी को वेबएपीआई को ओडाटा 2.0 स्वरूपित जेसन ऑब्जेक्ट्स देने के लिए एक चालाक तरीका पता है?

उत्तर

5

सही क्रमबद्धता प्रदान करने के लिए आपको अपना खुद का MediaTypeFormatter लिखना होगा। हमने एमवीसी 4 बीटा में ओडाटा फॉर्मेटर नहीं भेजा, लेकिन डब्ल्यूसीएफ वेब एपी के पिछले अवतार में कुछ लिखने के उदाहरण हैं। http://wcf.codeplex.com/SourceControl/list/changesets माइक्रोसॉफ्ट.Net.Http.Formatting.OData के लिए देखो (आपको अधिकांश स्रोतों का उपयोग करने में सक्षम होना चाहिए, हालांकि कुछ कार्यान्वयन विवरण बदल सकते हैं)

एक विकल्प डीटीओ बनाने की कोशिश करना होगा जो क्रमबद्ध करेगा OData v2 द्वारा अपेक्षित आकार के लिए।

+0

ठीक है। जानकारी, मार्क के लिए धन्यवाद। – racingcow

संबंधित मुद्दे