2016-10-30 4 views
1

Ich habe OData für eine Weile studiert und ich bin konfrontiert mit einer bestimmten Anforderung, für die ich keine Lösung finden konnte, die eine Funktion in OData mit den Parametern von Schrägstrichen umgeben, mit anderen Worten, Ich muss das erreichen:/entity/key/functionName/param1/param2/param3/Ich habe versucht, [RoutePrefix("/entity/{key}/functionName/{param1}/{param2}..."] ohne Erfolg zu verwenden. Die Aktion wie das war:OData Funktion Routing Konventionen

public IHttpActionResult functionName(int key, int param1, int param2...) 

Ich weiß, dass Sie dieses Ergebnis [RoutePrefix("/entity({key}/functionName(param1={param1}....) durch Verwendung haben. Aber das ist nicht was ich will.

Hat jemand eine Idee, wenn es durchführbar ist?

Antwort

2

OData ist effektiv eine Spezifikation für die Kommunikation mit einem Webservice. Es legt fest, wie Sie sortieren, auswählen und filtern, aber auch wie Sie Funktionen aufrufen. Was Sie hier vorschlagen, ist, eine Funktion aufzurufen, aber nicht auf die Weise, die OData spezifiziert. Daher macht es überhaupt keinen Sinn, zu fragen, ob es in OData gemacht werden kann. Ich würde entweder versuchen, es getrennt von OData zu erreichen, dh einfach reguläre Web.API verwenden oder das vorhandene OData-Format verwenden, sonst müssen Sie einen großen Teil der OData-Bibliothek neu schreiben

+0

Danke für Ihre Antwort Tom, Sie wissen, ob ich mindestens etwas wie in dieser Frage erreichen kann: http://stackoverflow.com/questions/40343559/how-to-create-a-sub-resource-using-odata-without-creating-a-collection-propert Danke im Voraus. – Bruno

+1

Das scheint mir das gleiche Problem zu sein - wenn Sie die Art ändern möchten, wie URLs erstellt werden, verwenden Sie OData nicht mehr – TomDoesCode