Sto tentando di utilizzare la nuova versione WebAPI beta per creare un servizio Web che posso interrogare utilizzando lo OData query string conventions e farlo restituire OData formatted Json. Voglio anche usare OData 2.0 (anziché 1.0).API Web MVC4 Asp.Net - Restituisce ODson formattato JSON dalla query senza MediaTypeFormatter personalizzato
Anche se non guardare come ha il supporto per l'opzione $select e le intestazioni sembrano essere in grado di ignorare l'opzione $format, restituendo un IQueryable
sembra generico per fornire il supporto per la maggior parte delle altre opzioni di query che ho bisogno.
Quello con cui sto davvero lottando è il modo migliore per fornire oggetti Json che soddisfano le specifiche OData 2.0. WebAPI restituisce i dati JSON normali quando richiesto. Ad esempio, se effettuo una richiesta GET di qualcosa di simile ...
http://localhost:XXXXX/vendor/?$filter=RONUMBER eq '2597385'&$select=VENDORID,VENDORNAME&$top=1&$format=Json
..per ottenere la top hit corrispondente al RONumber specificato sulla mia macchina dev, ottengo una risposta che contiene il seguente JSON ...
[{"MEPartNumber":"11-2222-3-4444","MFGPartNumber":"123456-123","MFGSerialNumber":"ABC123","RONumber":"987654321","VendorId":"1234567","VendorName":"ACME SERVICE CENTER"}]
Ho bisogno di Json che soddisfi le specifiche OData 2.0. Qualcosa di più come questo ..
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"
}
}
}
Suppongo che potrei scrivere un personalizzato MediaTypeFormatter
per ottenere la struttura che voglio. Potrei anche essere in grado di modificare i miei oggetti restituiti per simulare la struttura del Json desiderato. A parte queste due opzioni, qualcuno sa di un modo intelligente per far sì che WebAPI mi dia gli oggetti JSON formattati OData 2.0?
Ok. Grazie per le informazioni, marcind. – racingcow